常见排序
冒泡排序
public void bubbleSort(int[] a){
for(int i = 0;i < a.length - 1;i++){
for(int j = 0;j < a.length - 1 - i;j++){
if(a[j] > a[j+1])
swap;
}
syso(Arrays.toString(a));
}
}
选择排序
public void selectSort(int[] a){
for(int i = 1;i < a.length - 1;i++){
int min =a[i - 1];
int minIndex = i - 1;
for(int j = i;j < a.length - 1;j++){
if(a[j] < min)
minIndex = j;
}
a[i - 1] = a[minIndex];
a[minIndex] = min;
syso(Arrays.toString(a));
}
}
插入排序
public void insertSort(int[]a){
for(int i = 1;i < a.length;i++){
j = i - 1;
int temp = a[i];
for(;j >=0;j--){
if(a[j] > temp){
a[j + 1] = a[j];
}
}
a[j+1] = temp;
syso(Arrays.toString(a));
}
}
希尔排序
public static void shellSort(int[]a){
for(int gap = a.length / 2;gap > 0; gap /= 2){
for(int i = gap;i < a.length; i +=gap){
int j = i - gap;
int temp = a[i];
for(;j >=0 && a[j] >= temp;j -=gap){
a[j + gap] = a[j];
}
a[j + gap] = temp;
syso(Arrays.toString(a));
}
}
}
快速排序
public static void quickSort(int[]a,int left,int right) {
if(left >= right)
return ;
int i = left;
int j = right;
int pivot = a[left];
while (i < j) {
while (i < j && a[j] >= pivot) {
j--;
}
a[i] = a[j];
while (i < j && a[i] <= pivot) {
i++;
}
a[j] = a[i];
}
a[i] = pivot;
quickSort(a, left, i-1);
quickSort(a, i + 1, right);
}