排序演算法(一)

yingwenmingyangqi發表於2020-10-19

注:以下排序演算法都按從小到大的順序排序

1.氣泡排序

(1)演算法思想:從陣列中的第一個元素開始,依次比較相鄰兩個元素之間的大小,將較小的元素排在前面,這樣每輪會在陣列末尾選出一個最大的數,一共需要比較N-1輪(N為陣列長度)。

(2)程式碼實現:

import java.util.Arrays;

public class Demo02 {
    public  int[] sortArray(int[] A){
          int temp = 0;
          for(int i=0; i<A.length; i++){
              for(int j=0; j<A.length-i-1; j++){
                 if(A[j]>A[j+1]){
                     temp = A[j];
                     A[j] = A[j+1];
                     A[j+1] = temp;
                 }
              }
          }
//          System.out.println(Arrays.toString(A));
          return A;
    }
    public static void main(String[] args){
          int[] A = {1,16,4,9,20,45};
          Demo02 demo02 = new Demo02();
          demo02.sortArray(A);
    }
}

(3)時間複雜度:O(n^2)

(4)動圖演示:

2.選擇排序

(1)演算法思想:將待排序陣列分為兩部分,一部分為已排序,另一部分為未排序,第一輪在未排序的陣列中找出一個最小元素,放入到陣列的起始端,作為已排序陣列,之後每一輪都將未排序陣列中的最小值依次放到已排序陣列的末端。

(2)程式碼實現:

    public int[] sortArray(int[] A) {
        int temp = 0;
        for (int j = 0; j < A.length; j++) {
            int minNum = j;
            for (int i = j + 1; i < A.length-1; i++) {
                if (A[minNum] > A[i])
                    minNum = i;
            }
                temp = A[minNum];
                A[minNum] = A[j];
                A[j] = temp;
        }
        return  A;
    }
    public static void main(String[] args){
          int[] A = {1,16,4,9,20,45};
          Demo02 demo02 = new Demo02();
          demo02.sortArray(A);
          System.out.println(Arrays.toString(A));
    }
}

(3)時間複雜度:O(n^2)

  (4)   動圖演示:

相關文章