选择排序

选择排序

  • 选择排序是最简单的排序算法。算法思想非常的简单:
    • ①先找到数组中最小的那个元素,将他和数组的第一个元素交换位子。
    • ② 在剩下的元素中找到最小的元素,并且与第一个最小元素的右边第一个元素交换位置,如此反复。每次都在剩余的元素中去寻找最小元素。
  • 如数组 [10,1,3,4,2,8,9]进行排序
  • 使用minIndex变量记录最小值的下标。每一轮都能找到最下值。如果 最小值下标发生了变化,就交换两个数组.
    • 第一轮: 外层循环:i=0; minIndex=i;内层循环从j=i+1开始, 进行arr[j]<arr[i]的判断,如果排队成立,就将minIndex更新为j,内存循环结束之后,会判断最小值下标是否发生了变化,如果变化了 就 交换arr[i]与arr[minIndex]的值。
      • [1,10,3,4,2,8,9]
    • 第二轮:i=1,minIndex=i;此时arr[i]=10;从内存循环,找到余下的最小值,并更新minIndex的值。
      • [1,2,3,4,10,8,9]
    • 第三轮:i=2;minIndex=i,此时arr[i]=3;在内层循环中没有找到比3 更小的值就不进行交换。
      • [1,2,3,4,10,8,9]
  • 后面依次进行比较并交换即可。具体代码如下
 public static void select_sort(int array[],int lenth){

        for(int i=0;i<lenth-1;i++){
            //最小值的索引
            int minIndex = i;
            //i+1 每一轮都能找到一个最小值
            for(int j=i+1;j<lenth;j++){
                //更新最小值索引
                if(array[j]<array[minIndex]){
                    minIndex = j;
                }
            }
            //如果最小值索引发生变化
            if(minIndex != i){
                //对换值
                int temp = array[i];
                array[i] = array[minIndex];
                array[minIndex] = temp;
            }
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值