java中幾種排序的實現

1.最簡單的冒泡排序shell

/**
 * 冒泡排序
 */
public static void bubbleSort(){
    int[] arr = {5,8,1,2,9,8,7,4};
    System.out.println("排序前的數組爲:" );
    for (int num : arr){
        System.out.println(num + " ");
    }
    for (int i =0; i<arr.length;i++){
        for(int j =0 ; j<arr.length-1-i; j++){
            if(arr[j] > arr[j+1]){
                int tem = arr[j];
                arr[j] = arr[j+1];
                arr[j+1] = tem;
            }

        }
    }
    System.out.println();
    System.out.println("排序後的數組爲:");
    for (int num : arr){
        System.out.println(num + " ");
    }
}

2.插入排序數組

/**
 * 插入排序
 * 思想:假設前面的幾個是按照順序排好的,
 * 以後的每個元素會與以前有順序的數組中值比較直到找到那個小於
 * 他的就會交換位置,以此類推
 * @param arr
 * @return
 */
public static int[] inserSort(int[] arr){
    int temp = 0;
    for (int i = 0; i<arr.length; i++){
        int j = i-1;
        temp = arr[i];
        for (;j >=0 && temp<arr[j];j--){
            arr[j+1] = arr[j];//將大與於temp的值日後移一個單位
        }
        arr[j+1] = temp;
    }

    return  arr;
}

3.希爾排序排序

/**
 * 希爾排序
 * 將數組分紅d分紅若干份,其他的就是按照插入排序來完成的,直到d=1就表示數組已經排好序了
 * @param arr
 * @return
 */
public static int[] shellSort(int[] arr){
    double d1 = arr.length;
    int temp = 0;
    while (true){
        d1 = Math.ceil(d1/2);
        int d = (int) d1;
        for (int x = 0;x<d;x++){
            for (int i = x+d;i<arr.length;i+=d){
                int j = i-d;
                temp = arr[i];
                for (;j>=0 && temp<arr[j]; j-=d){
                    arr[j+d] = arr[j];
                }
                arr[j+d] = temp;
            }
        }
        if (d==1){
            break;
        }
    }
    return arr;

}

4.選擇排序it

/**
 * 選擇排序
 * 從數組中找到最小的而後和第一個交換位置,而後再剩下的裏找最小的和第二個交換位置,
 * 循環直到倒數第二個數和最後一個數比較
 * @param arr
 * @return
 */
public static int[] selectSort(int[] arr){
    int position = 0;
    for (int i=0;i<arr.length;i++){
         position = i;
         int temp = arr[i];
        for (int j=i+1;j<arr.length;j++){
            if(arr[j]<temp){
                temp = arr[j];
                position = j;
            }
        }
        arr[position] = arr[i];
        arr[i] = temp;
    }
    return arr;
}

5.快速排序,稍後會寫上io

相關文章
相關標籤/搜索