1. 程式人生 > >十大排序算法Java實現

十大排序算法Java實現

nbsp main 計數 計數器 希爾 sele style div lec

1.冒泡排序Bubble Sort

public class BubbleSort {
    public static void main(String[] args) {
        int[] arr = {2,5,7,1,6,4,9};
        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
temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); //1245679 } } }

代碼解釋: 外層for循環可以當成是一個計數器:控制內層for循環的次數。

每一次外圈循環完成後會將最大元素排到最後一位,這樣下一次內圈循環就不必比較相對最後兩位元素了,於是內圈循環次數減少相應的數值

2.選擇排序Selection Sort

public class SelectionSort {
    public static void main(String[] args) {
        int[] arr = {2,5,7,1,6,4,9};
        int minIndex,temp;
        for (int i = 0; i < arr.length-1; i++) {
            minIndex = i;
            for (int j = i+1; j < arr.length; j++) {
                
if(arr[j]<arr[minIndex]){ minIndex = j; } } temp = arr[i]; arr[i] = arr[minIndex]; arr[minIndex] = temp; } for (int i = 0; i < arr.length; i++) { System.out.print(arr[i]); //1245679 } } }

3.插入排序Insertion Sort

public class InsertionSort {
    public static void main(String[] args) {
        int[] arr = { 2, 5, 7, 1, 6, 4, 9 };
        int preIndex, current;
        for (int i = 1; i < arr.length; i++) {
            preIndex = i - 1;
            current = arr[i];
            while (preIndex >= 0 && arr[preIndex] > current) {
                arr[preIndex + 1] = arr[preIndex];
                preIndex--;
            }
            arr[preIndex + 1] = current;
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
            //1245679
        }
    }
}

4.希爾排序Shell Sort

public class ShellSort {
    public static void main(String[] args) {
        int[] arr = { 2, 5, 7, 1, 6, 4, 9 };
        int temp, j;
        int gap = 1;
        while (gap < arr.length / 3) {
            gap = gap * 3 + 1;
        }
        for (; gap > 0; gap = (int) Math.floor(gap / 3)) {
            for (int i = gap; i < arr.length; i++) {
                temp = arr[i];
                for (j = i - gap; j > 0 && arr[j] > temp; j -= gap) {
                    arr[j + gap] = arr[j];
                }
                arr[j + gap] = temp;
            }
        }

        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
            // 1245679
        }
    }
}

5.歸並排序Merge Sort

後邊的會陸續更新

十大排序算法Java實現