JAVA实现选择排序

前言:选择排序,顾名思义,就是选择一个位置进行比较排序。区别于冒泡排序,选择排序是选择一个索引位,与其他索引位进行比较交换,而冒泡排序则是相邻两个索引位进行比较交换


核心思想

选择第 0索引位,与其他索引位相比较,第一次比较,得出小的数始终确保位于0索引位,该趟结束后,得出最小数。之后选择第1索引重复比较

设计思路

外层控制循环整个数组循环次数,同时赋予内层索引初始值,内层控制该次循环下,索引位比较次数

代码实现

选择排序算法

public static void selector(int[] arr){
        for (int x = 0; x<arr.length-1; x++){
            for (int y= x+1; y<arr.length; y++){
                if (arr[x]>arr[y]){
                    int temp = arr[x];
                    arr[x] = arr[y];
                    arr[y] = temp;
                }
            }
        }
    }

测试代码

public static void main(String[] args) {
        int [] arry = {2,5,1,6,8,7,5,0};
        selector(arry);
        for (int num: arry){
            System.out.print(num);
        }
    }

测试结果

01255678

代码解析

  • x<arr.length-1;外层循环为什么需要-1?首先该数组长度为8,x<arr.length的结果为7,此时索引位为[0,7]但是实际上排完[0,6]索引位时第7个索引位就无需再拿去循环一趟
  • int y= x+1;内层循环为什么是x+1?由第一次循环举例,初始索引位为0,所以内层循环只需要从1索引位开始,值得注意的是,该内循环判断条件是:arr[x]>arr[y],这也是选择排序的精髓
posted @ 2020-02-22 16:39  guaosky  阅读(411)  评论(0)    收藏  举报