常用排序实现

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);
        }
}
上一篇下一篇

猜你喜欢

热点阅读