常用排序实现
2019-07-15 本文已影响0人
最美的谣言
选择排序(不稳定)
//选择排序(不稳定)
public static void selectionSort(int[] array){
for(int i=0; i<array.length-1; i++){
int minIndex = i;
for(int j=i+1; j<array.length; j++){
minIndex = array[minIndex] < array[j] ? minIndex: j;
}
int temp = array[i];
array[i] = array[minIndex];
array[minIndex] = temp;
}
}
冒泡排序(稳定)
//冒泡排序(稳定)
public void bubbleSort(int[] a){
int temp = 0;
for(int i=a.length-1; i>0; --i){
for(int j=0; j<i; ++j){
if(a[j+1] < a[j]){
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
快速排序(不稳定)
//快速排序(不稳定)
public void quickSort(int arr[],int sIndex,int eIndex){
if (sIndex < eIndex) {
int p = arr[sIndex] , i = sIndex , k = eIndex;
while (i < k) {
while(i < k && arr[k] >= p) k--;// 从右向左找
if (i < k ) arr[i++] = arr[k];
while(i < k && arr[i] < p) i++;// 从左向右找
if (i < k ) arr[k--] = arr[i];
}
arr[i] = p;
quickSort(arr, sIndex, i - 1); // 递归
quickSort(arr, i + 1, eIndex);
}
}