选择排序
遍历数组 选择最小的数分别放到0 - N-1位置
public class 选择排序 {
public static void main(String[] args) {
int[] arr = new int[100];
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100);
}
quickSort(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
private static void quickSort(int[] arr) {
if (arr == null || arr.length == 0) {
return;
}
for (int i = 0; i < arr.length - 1; i++) {
int minIndex = i;
for (int j = i; j < arr.length; j++) {
minIndex = arr[minIndex] < arr[j] ? minIndex : j;
}
swap(arr, i, minIndex);
}
}
private static void swap(int[] arr, int i, int j) {
// 有零不行
// arr[i] = arr[i] ^ arr[j];
// arr[j] = arr[i] ^ arr[j];
// arr[i] = arr[i] ^ arr[j];
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
冒泡排序
遍历数组从0到N-1 如果j位置比他后面一个位置数大 则向后移
public class 冒泡排序 {
public static void main(String[] args) {
int[] arr = new int[100];
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100);
}
maoPaoSort(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
private static void maoPaoSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = 0; j < arr.length-i; j++) {
if (arr[j] > arr[j+1]) {
swap(arr, j, j + 1);
}
}
}
}
private static void swap(int[] arr, int j, int i) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
插入排序
遍历数组从1到N-1
public static void main(String[] args) {
int[] arr = new int[100];
Random random = new Random();
for (int i = 0; i < arr.length; i++) {
arr[i] = random.nextInt(100);
}
insertSort(arr);
for (int i : arr) {
System.out.print(i+" ");
}
}
private static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
for (int j = i; j>0; j--) {
if (arr[j] < arr[j-1]) {
swap(arr, j, j - 1);
}
}
}
}
private static void swap(int[] arr, int j, int i) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}```