选择排序

	private static void select_Sort(int[] unsorted){//选择排序
		
		for(int i=0;i<unsorted.length;i++){
			int min=unsorted[i];
			int temp;
			int index=i;
			for(int j=i+1;j<unsorted.length;j++){
				if(min>unsorted[j]){
					min=unsorted[j];
					index=j;
				}
			}
			temp=unsorted[i];
			unsorted[i]=min;
			unsorted[index]=temp;
			
		}
	}



选择排序从理解上并不困难,首先从一堆元素之中找到最小值,然后将它排列到数组的首元素位置,可是这样做的话,首元素的值不就被覆盖了吗?那么我们该怎么操作才能保住第一个值,可想而知可以把以前最小值的元素的位置用来存储首元素,事实也的确如此。接下来的操作和最初的操作也一样,只不过之前的最小的元素已经不再考虑的范围之类了,只需考虑余下的元素,就这样重复此步骤形成一条有序的序列,从这些元素中找最大值也是如此,只不过把最大值与最后的元素的调换一下。

代码解析:

1.第一个for循环是一次将每个元素都与其后面的元素做一个比较,初始的时候都把当前的位置假象成是最小值,并保留其索引值。

2.第二个for循环是把前面假象的最小值与其后面的元素一一比较,如果后面的元素有比假象的最小值还要小,则记下他的位置。

3.退出了第二个for循环之后也找到了最小值和最小值的位置,则将它与假象的最小值互换,继续执行第一层for循环,直到所有元素都完成排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值