选择排序图解

选择排序

题型:int[]array= {3,4,2,1}; 将这个数组从小到大排序。
思路:
1.我们先得到一个最小的数,将它放置于数组第一位。
2.然后我们按照第一步,每一次得到一个最小数放置在第二位直到放到倒数第二位。(最后一位不用再去得到放置)
3.然后我们就要去考虑怎么样得到最小然后去放置。
比喻:有一个拳击手,刚开始带着这个数字装备去打擂台,当他打赢了以后,对方说不公平,让其互换数字装备继续下一次打擂,直到拳击手的数字装备最差,才承认他的技术。(从当前开始的后一个一直打到最后一个得到最小值)
4.分解:
第一次:3 4 2 1 得到3去进行打擂;
3 4 2 1–>(3和4比)3 4 2 1–>(3和2比)2 4 3 1–>(2和1比)1 4 3 2
第二次:1 4 3 2 得到4去进行打擂;
1 4 3 2–>(4和3比)1 3 4 2–>(3和2比)1 2 4 3
第三次:1 2 4 3得到4去进行打擂;
1 2 4 3–>(4和3比)1 2 3 4 (尽量自己画一遍,帮助理解)
5.上代码分析
int[]array= {3,4,2,1}; //创建任意一个数组
int length=array.length; //先得到数组长度
for(int i=0;i<length-1;i++) { //从0位置开始放置最小值
//这个for循环主要是为了不同的放置,放置到0,1,length-1;
for(int j=i+1;j<length;j++) { //对0位置(i)之后的数依次进行比较
//j=i+1就是因为打擂台是从下一个开始到结束
if(array[i]>array[j]) { //如果array[i]的数大于比较的数,就进行交换
int num=array[i]; //交换
array[i]=array[j];
array[j]=num;
}
}
}
for(int res:array) { //增强for循环
System.out.print(res+" "); //输出
}
6.结果
在这里插入图片描述总结:其实选择排序重要的是理清思路然后对于双for的语句,要去思考它的控制语句和判断条件,观察前后for里面i ,j是否有关联。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值