码迷,mamicode.com
首页 > 编程语言 > 详细

选择排序算法讲解

时间:2020-05-31 17:37:48      阅读:61      评论:0      收藏:0      [点我收藏+]

标签:pre   相等   位置   交互   最小值   代码   code   mini   12px   

  一,选择排序的思想:

①先假设第一个数最小的,然后拿这个数去和后面的n个数依次进行比较,
②如果发现有比最小值还小的数 则通过中间变量记录下下标和值,
③然后继续拿这个最小值往后进行比较,如果又发现比最小值还小的值 就执行第②步,直到比完最后一个元素
④最后把存在中间变量的最小值和最小值的下标 和假设的那个最小值进行交换
二,示例演示

示例过程:
 2, 1, 4, 3
①2和 1, 4 ,3比较 ,发现有1比2小, 则用中间变量记录1和下标1, 然后再用存在中间变量的最小值和4比较, 不符合,再和3比较, 不符合,最后得到1为最小值,所以2和1就行位置的交换
1, 2, 4, 3
②2和 4 ,3 进行比较 规则和①一样
1, 2, 4, 3
③4和3进行比较 规则和①一样
1, 2, 3 ,4
通过示例演示发现 n个数 比较n-1次
三,代码
Ⅰ,按照思想进行代码的实现
public static void selectSort(int []arr){
        /**
         *示例:2 ,1, 4, 3
         * ①先假设第一个数最小的(2),然后拿这个数去和后面的n个数依次进行比较,
         * ②如果发现有比最小值还小的数 则通过中间变量记录下下标和值,
         * ③然后继续拿这个最小值往后进行比较,如果又发现比最小值还小的值 就执行第②步,直到比完最后一个元素
         * ④最后把存在中间变量的最小值和最小值的下标 和假设的那个最小值进行交换
         * 示例过程:
         * 2, 1, 4, 3
         * ①2和 1, 4 ,3比较 ,发现有1比2小, 则用中间变量记录1和下标1,  然后再用存在中间变量的最小值和4比较, 不符合,再和3比较, 不符合,最后得到1为最小值,所以2和1就行位置的交换
         * 1, 2, 4, 3
         * ②2和 4 ,3 进行比较 规则和①一样
         * 1, 2, 4, 3
         * ③4和3进行比较 规则和①一样
         * 1, 2, 3 ,4
         * 通过示例演示发现 n个数 比较n-1次
         */
        for(int i=0;i<arr.length-1;i++){
            // 声明中间值用进行比较和存最小值
            int minNumber=arr[i];
            int minIndex=i;
            for(int j=i+1;j<arr.length;j++){
                if(minNumber>arr[j]){
                    minNumber=arr[j];
                    minIndex=j;
                }
            }
            arr[minIndex]=arr[i];
            arr[i]=minNumber;
        }

    }

,通过观察示例交换的规律发现 当假设成立的时候 就不用进行数据的交换了,因此当中间变量的下标值和假设的值相等时,就不用就行数据的交互

public static void selectSort2(int []arr){
        for(int i=0;i<arr.length-1;i++){
            int minNumber=arr[i];
            int minIndex=i;
            for(int j=i+1;j<arr.length;j++){
                if(minNumber>arr[j]){
                    minNumber=arr[j];
                    minIndex=j;
                }
            }

            if(minIndex!=i){
                arr[minIndex]=arr[i];
                arr[i]=minNumber;
            }
        }
    }

 

 

选择排序算法讲解

标签:pre   相等   位置   交互   最小值   代码   code   mini   12px   

原文地址:https://www.cnblogs.com/zhijm/p/13019912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!