Java排序算法2:选择排序

一.思想:

走访数列n-1遍,第一趟从num[0]---num[n]中选取最小(最大)的数,与num[0]交换。第二趟从num[1]---num[n]中选择最小(最大)的数,与num[1]交换......依次类推。

二.例子:

比如5,4,2,3,第一趟比较的过程为:

1.找到num[0]---num[3]的最小的数为2,与num[0]交换,交换后的序列为:2,4,5,3.

第二趟比较过程为:

1.找到num[1]---num[3]的最小的数为3,与num[1]交换,交换后的序列为:2,3,5,4.

第三趟依次类推。

三.实现代码:

public class SelectionSort {
	public static void main(String args[])
	{
		int num[] = {4,3,6,9887,5,3,2,3,1};

		
		System.out.print("原始数据:");
		print(num);			
		
		sort(num);
		
		System.out.print("排序后数据:");
		print(num);
	}
	
	public static void sort(int num[])
	{
		int i,j;   //循环变量
		int flag;    //交换变量
		
		for(i = 0; i < num.length - 1; ++i)
		{
			for(j = i + 1; j < num.length; ++j)
			{
				if(num[i] > num[j])
				{
					flag = num[i];
					num[i] = num[j];
					num[j] = flag;
				}
			}
		}
	}
	
	public static void print(int num[])
	{
		int i;
		
		for(i = 0; i < num.length; ++i)
		{
			System.out.print(num[i]+" ");
		}
		System.out.print("\n");
	}

}

四.复杂度与应用:

时间复杂度:O(n*n) 空间复杂度:O(1),   是不稳定的算法。

应用:在大多数情况下都不推荐使用,只有在希望减少交换次数情况下使用,也可以在问题规模小的情况下使用。

五.参考资料:

1.追竹的博客:http://blog.csdn.net/apei830/article/details/6584531

2.百度百科-选择排序法:http://baike.baidu.com/link?url=tw8rCnBJv0jFO4KKBctUGKNpq-ocug0pjvsmGNKztKQ0CPCIEJzqIbv8IOkHWKRADCJSCf2TyKV_GGhI6MgRmK

六:相关排序代码下载:
包含(冒泡排序,桶排序,堆排序,插入排序,归并排序,快速排序,基数排序,选择排序,希尔排序)
免积分下载地址: http://download.csdn.net/detail/u014077165/7185895

你可能感兴趣的:(算法,排序算法,java,选择排序)