四种排序算法:冒泡排序、选择排序、插入排序、快速排序
package day06;
public class MySortUtils {
public static void maopaoSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) {
boolean flag = false;
for (int j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
flag = true;
}
}
if (!flag) {
System.out.println("本轮中的两两比较未发生元素互换,排序已经完成啦");
return;
}
}
}
public static void chooseSort(int[] arr) {
int index = 0;
int max = arr[0];
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - i; j++) {
if (max < arr[j]) {
max = arr[j];
index = j;
}
}
int temp = arr[arr.length - i - 1];
arr[arr.length - i - 1] = max;
arr[index] = temp;
max = arr[0];
index = 0;
}
}
public static void insertSort(int[] arr) {
for (int i = 1; i < arr.length; i++) {
int cur = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > cur) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = cur;
}
}
public static void quickSort(int[] arr, int low, int high) {
if (low < high) {
int mid = getMiddle(arr, low, high);
quickSort(arr, 0, mid - 1);
quickSort(arr, mid + 1, high);
}
}
private static int getMiddle(int[] arr, int low, int high) {
int key = arr[low];
while (low < high) {
while (low < high && arr[high] >= key) {
high--;
}
arr[low] = arr[high];
while (low < high && arr[low] <= key) {
low++;
}
arr[high] = arr[low];
}
arr[low] = key;
return low;
}
}