算法之冒泡排序、選擇排序

冒泡排序

思路(長度爲n的數組):

  1. 首先,對n個元素進行n-1次排序,進行n-1次
  2. 考慮到每排序一次,就會有一個當前最大或最小的元素置於頂端,所以排序的次數減去當前已經排序的次數(num-1-i)
public class Test {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入數組的大小");
        int num = scanner.nextInt();
        int[] sortArray = new int[num];
        System.out.println("請輸入"+num+"大小的數組");
        for (int i = 0; i < num; i++) {
            sortArray[i] = scanner.nextInt();
        }
        int temp = 0;
        for (int i = 0; i < num-1; i++) {
            for (int j = 0; j < num-1-i; j++) {
                if(sortArray[j]>sortArray[j+1]){
                    temp = sortArray[j];
                    sortArray[j] = sortArray[j+1];
                    sortArray[j+1] = temp;
                }
            }
        }
        System.out.println(Arrays.toString(sortArray));
    }
}

在這裏插入圖片描述

選擇排序

思路(長度爲n的數組):

  1. 對n個元素進行掃描,記錄下最小元素的值和索引,掃描結束,把最小(以最小爲例)的元素置於首位。
  2. 對接下來的n-1個元素進行掃描,記錄下最小元素的值和索引,掃描結束,把最小(以最小爲例)的元素置於首位。
  3. 剩下最後一個元素無序進行排序(len-1)
public class Test2 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入數組的大小");
        int num = scanner.nextInt();
        int[] sortArray = new int[num];
        System.out.println("請輸入"+num+"大小的數組");
        for (int i = 0; i < num; i++) {
            sortArray[i] = scanner.nextInt();
        }
        int temp = sortArray[0];
        int index = 0;
        int len = sortArray.length;
        for (int i = 0; i < len-1; i++) {
            for (int j = i; j < len; j++) {
                if(temp>sortArray[j]){
                    temp = sortArray[j];
                    index = j;
                }
            }
            sortArray[index] = sortArray[i];
            sortArray[i] = temp;
            temp = sortArray[i+1];
        }
        System.out.println(Arrays.toString(sortArray));
    }
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章