简单排序:选择排序

简单排序:选择排序,第1张

简单排序:选择排序

一.原理
1.每一次遍历的过程中,都假定第一个索引处的元素是最小值min,并和其他索引处的值依次进行比较,如果当前索引处 的值大于其他某个索他引处的值,则假定其某个索引出的值为最小值min,最后可以找到最小值所在的索引

2.最后交换第一个索引处和最小值所在的索引处的值

(寻找最小;假定第一个为设定最小值min开始,与后面依次比较,谁小谁的索引就是min,最后将min放到第一,比较个数越来越少)


由于原理较简单,直接上代码。

二.java代码实现

public class selection {
    public static void sort(int[] a){
        for (int i=0;ia[j]){  //比较假定最小数和后面一位
                    min=j;
                }
            }
            exchange(a,i,min);  //交换默认第一个数和 这一轮最小的数
                    }}

private static void exchange(int[]a,int i,int min){ //不要忘了参数的声明类型
        int t=a[i];
        a[i]=a[min];
        a[min]=t;}
    public static void main(String[] args) {
        int[] a={4,6,8,7,9,2,10,1};
        selection.sort(a);
        System.out.println(Arrays.toString(a));
    }
}

运行结果:[1, 2, 4, 6, 7, 8, 9, 10]

需要注意的地方:

  1. 外层循环可以视为每一轮假定最小值可选的索引范围。其假定的最小值最大也就取到倒数第二个,不能取到最后一个,所以i < a.length-1
  2. 需要初始化一个minIndex来记录假定最小值的索引,初始默认为第一个数,所以minIndex=i。
  3. 内层循环比较的是假定最小值和后面一个数,即a[minIndex]和a[j],所以j=i+1。
  4. j的范围可以取到最后一位,所以j

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5684344.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存