1.冒泡排序的核心就是双层循环,如果前者比后者大就调换位置,这样一趟排序下来最大的就排到最后面了。
核心调换位置:
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
2.洗牌的意思就是将排好的顺序打乱,随机打乱。主要就是随机产生的数据作为数组下标对数组进行随机排列。
/*
* Copyright (c) 2020, 2023, All rights reserved.
*
*/
import java.util.Arrays;
import java.util.Random;
/**
* <p>Project: ch04 - ArrSort</p>
* <p>Powered by scl On 2023-07-12 11:23:22</p>
* <p>描述:<p>
*
* @author scl [1846080280@qq.com]
* @version 1.0
* @since 17
*/
public class ArrSort {
public static void main(String[] args) {
Random random = new Random();
int[] arr = new int[10];
//随机产生10个数字,赋值给数组
for (int i = 0; i < 10; i++) {
arr[i] = random.nextInt(0, 101);
}
System.out.println(Arrays.toString(arr));
//冒泡排序 if (arr[j]>arr[j+1]) >为升序 <为降序
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
int t;
if (arr[j] > arr[j + 1]) {
t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
System.out.println(Arrays.toString(arr));
//洗牌
for (int i = 0; i < arr.length - 1; i++) {
int a = random.nextInt(arr.length);
int b = random.nextInt(arr.length);
if (a == b) {
i--;
continue;
}
int t;
t = arr[a];
arr[b] = arr[a];
arr[a] = t;
}
System.out.println(Arrays.toString(arr));
}
}