码迷,mamicode.com
首页 > 其他好文 > 详细

记录我学习数据结构之路(六)

时间:2015-08-02 16:58:30      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:

选择排序思路:不像冒泡排序那样每次找到比它小的就交换,而是要选择最小的,只交换一次就够了。

代码实现如下:

public void sort(){
		int out,in,min;
		for(out = 0; out < nElement; out++){
			min = out;
			for(in = out+1; in < nElement; in++){
				if(a[in] < a[min]){
					min = in;
				}
			}
			swap(out,min);
		}
	}

选择排序最大的特点就是交换移动数据次数相当小,这样就可以节约时间。分析它的时间复杂度发现,无论最好最差的情况,其比较次数都是一样的多,第i趟排序需要进行n-i次关键字的比较,此时需要比较(n-1)+(n-2)+...+1=n(n-1)/2次。对于交换次数而言,当最好的时候,交换为0次,最差的时候,也就初始降序时,交换次数为n-1次,基于最终的排序时间是比较与交换的次数总和,因此,总的时间复杂度为O(n^2)。

虽然跟冒泡法排序的时间复杂度是一样的,但在性能上选择排序比冒泡法排序更优一些。

记录我学习数据结构之路(六)

标签:

原文地址:http://my.oschina.net/u/2279675/blog/486652

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!