数据结构与算法学习——选择排序【使用上篇的冒泡排序】

<p style="font-size: 14px; color: rgb(51, 51, 51); font-family: Arial; line-height: 26px;">选择排序和冒泡排序差不多,只是冒泡排序在发现比它小的时候就交换,而选择排序是只有在确定了最小的数据之后,才会发生交换。</p><pre id="best-answer-content" class="reply-text mb10" name="code" style="background-color: rgb(255, 255, 255); white-space: pre-wrap; word-wrap: break-word; color: rgb(51, 51, 51); line-height: 26px;"><span style="font-size:18px;">选择排序的基本思想:第i趟简单选择排序是指通过n-i次关键字的比较,从n-i+1个记录中选出关键字最小的记录,并和第i个记录进行交换。先临时记录其位置,只有在一趟循环完以后确定了最小的数据,才会发生交换。</span>
 
 

 
public static void  _ChoiceSort(int[] sort)
	{
		if(sort == null || sort.length<=0)
		{
			return;
		}
		
		for(int i=0;i<sort.length-1;i++)
		{
			/* 将当前下标定义为最小值下标 */  
			int min = i;
			
			for(int j=i+1;j<sort.length;j++){
				 /* 如果有小于当前最小值的关键字 */  
				if(sort[min]>sort[j])
				{
					//将此关键字赋值给min
					min = j;
				}
			}
			/* 若min不等于i,说明找到最小值,交换 */
			if(i!=min)
			{
				int temp = sort[min];
				
				sort[min] = sort[i];
				
				sort[i] = temp;
			}
			System.out.println("选择排序的结果:");
			System.out.print("第" + (i + 1) + "次排序结果:");
			
			for(int a = 0; a < sort.length; a++){
                System.out.print(sort[a] + "\t");
            }
            System.out.println("");
        
		}
			System.out.print("最终排序结果:");
		    for(int a = 0; a < sort.length; a++)
		    {
		           System.out.print(sort[a] + "\t");
		     }
		}
	

第1次排序结果:1	33	12	45	23	68	44	24	100	88	98	59	
第2次排序结果:1	12	33	45	23	68	44	24	100	88	98	59	
第3次排序结果:1	12	23	45	33	68	44	24	100	88	98	59	
第4次排序结果:1	12	23	24	33	68	44	45	100	88	98	59	
第5次排序结果:1	12	23	24	33	68	44	45	100	88	98	59	
第6次排序结果:1	12	23	24	33	44	68	45	100	88	98	59	
第7次排序结果:1	12	23	24	33	44	45	68	100	88	98	59	
第8次排序结果:1	12	23	24	33	44	45	59	100	88	98	68	
第9次排序结果:1	12	23	24	33	44	45	59	68	88	98	100	
第10次排序结果:1	12	23	24	33	44	45	59	68	88	98	100	
第11次排序结果:1	12	23	24	33	44	45	59	68	88	98	100	
第12次排序结果:1	12	23	24	33	44	45	59	68	88	98	100	
最终排序结果:1	12	23	24	33	44	45	59	68	88	98	100	
总结:从结果可以看出选择排序是没完成一次排序把所有数据中最小的那个数找到放到i位置。




</pre><pre id="best-answer-content" class="reply-text mb10" name="code" style="white-space: pre-wrap; word-wrap: break-word; color: rgb(51, 51, 51); font-size: 14px; line-height: 26px; background-color: rgb(255, 255, 255);">
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值