Java基本算法(2)——选择排序

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Will_cruise/article/details/86305419

 选择排序的流程:

首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

注意:

  • 比较的轮数为:num.length-1(即:比数组中元素个数少1)
  • 第i轮比较会确定数组中第i小的位置,比较位为j=i+1(第i轮比较开始,即把数组的第i位当作最小的比较对象去比较,因为i之前的已经排好)​​​​​​
package javaTest;
//选择排序:每轮排序开始,选择数组的第i位作为比较对象,循环比较找出第i小的位置,在循环结束后把第i小交换到其应当在的位置
public class Test2 {
	public static void main(String []args) {
		int []num = {2,5,18,3,23,89,8};
		int temp=0;//临时交换数据用
		for(int i=0;i<num.length-1;i++) {//需要比较的轮数
			int minindex=i;//第i轮比较开始,把数组的第i位当作最小的比较对象去比较
			for(int j=i+1;j<num.length;j++) {//第i轮比较的开始位置及比较次数
				if(num[minindex]>num[j])
					minindex=j;//找到最小数的位置,并更新
			}
			if(minindex!=i) {//如果第i轮中数组的第i位不是第i小,则交换
			temp=num[i];
			num[i]=num[minindex];
			num[minindex]=temp;
			}
		}
		for(int i=0;i<num.length;i++) {
		System.out.print(num[i]+",");
		}
	}
}
/*
2,5,18,3,23,89,8       轮数            更新后
2,5,18,3,23,89,8    	0            minindex=0
2,3,18,5,23,89,8    	1            minindex=3
2,3,5,18,23,89,8    	2            minindex=3
2,3,5,8,23,89,18    	3            minindex=6
2,3,5,8,18,89,23    	4            minindex=6
2,3,5,8,18,23,89    	5            minindex=6
*/

拓展:

选择排序是一种不稳定型排序方法。

猜你喜欢

转载自blog.csdn.net/Will_cruise/article/details/86305419