算法之冒泡排序、选择排序

冒泡排序

思路(长度为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));
    }
}

在这里插入图片描述

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