<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);">