持续更新,冒泡排序法,选择排序法,插入排序法,快速排序法
推荐一个算法可视化网址:https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html
public class Sort {
public static void main(String[] args) {
int[] a = {3, 15, 0, 4, 12, 8, 10};
quickSort(a);
for (int i : a) {
System.out.print(i + "\t");
}
}
// 冒泡排序法
public static void bubbleSort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
boolean flag = true;
for (int j = 0; j < a.length - i - 1; j++) {
if (a[j + 1] < a[j]) {
int temp;
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
flag = false;
}
}
if (flag) {
break;
}
}
}
// 选择排序法
public static void selectSort(int[] a) {
for (int i = 0; i < a.length - 1; i++) {
int min = i;
for (int j = i + 1; j < a.length; j++) {
if (a[j] < a[min]) {
min = j;
}
}
if (min != i) {
int temp;
temp = a[i];
a[i] = a[min];
a[min] = temp;
}
}
}
// 插入排序法
public static void insertSort(int[] a) {
for (int i = 1; i < a.length; i++) {
int prefix = a[i];
int j = i - 1;
while (a[j] > prefix && j > 0) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = prefix;
}
}
// 快速排序法
public static void quickSort(int[] a) {
quick(a, 0, a.length - 1);
}
public static void quick(int[] a, int begain, int end) {
if (begain < end) {
int base = a[begain];
int i = begain;
int j = end;
while (i < j) {
while (i < j && a[j] > base) {
j--;
}
if (i < j) {
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
while (i < j && a[i] < base) {
i++;
}
if (i < j) {
int temp;
temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
a[i] = base;
quick(a, i + 1, end);
quick(a, begain, i - 1);
}
}
}