快速排序
/**
* 快速排序时间复杂度为n*lgn
* 不稳定排序算法
*/
public static void quickSort(int[] a,int l,int r) {
if (l < r) {
int i,j,x;
i = l;
j = r;
x= a[i];
while (i < j) {
while (i < j && a[j] > x) {
j--;
}
if (i < j) {
a[i++] = a[j];
}
while (i < j && a[i] < x) {
i++;
}
if (i < j) {
a[j--] = a[i];
}
a[i] = x;
quickSort(a,l,i - 1);
quickSort(a,i+1,r);
}
}
}
冒泡排序
每一趟比较都会选出当前所有比较数的最大值,大的值往右放,小的值往左放。
public static void bubbleSort(int[] arr) {
for (int i = 0;i < arr.length - 1;i++) {
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;
}
}
}
}
选择排序
public static void selectSort(int[] arr) {
int k;
for (int i = 0; i < arr.length - 1; i++) {
k = i;
for (int j = k + 1;j <= arr.length - 1;j++) {
if (arr[k] < arr[j]) {
k = j;
}
}
if (k != i) {
int temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
}