码迷,mamicode.com
首页 > 编程语言 > 详细

排序算法之简单选择排序

时间:2015-05-05 16:34:15      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:排序算法   c++   面试题   

基本思想:

将初始序列(A[0]~A[n-1])作为待排序序列,第一趟在待排序序列(A[0]~A[n-1])中找最小值元素,与该序列中第一个元素A[0]交换,这样子序列(A[0])有序;下一趟排序在待排序子序列(A[1]~A[n-1])中进行。第 i 趟排序,A[i-1]~A[n-1] 中,找到最小元素,与该子序列中第一个元素 A[i-1] 交换。经过n-1趟排序后使得初始序列有序。


简单选择排序示例:

技术分享


代码:

void SelectSort(int A[],int n)//简单选择排序
{
	int small;

	for(int i=0; i<n; i++)
	{
		small=i;

		for(int j=i+1; j<n; j++)
		{
			if(A[j]<A[small])
				small=j;
		}

		swap(A[i],A[small]);
	}
}

时间复杂度分析:

该算法和初始序列排列无关。无论初始序列如何,该算法都必须执行n-1趟,每趟执行n-i-1次关键字的比较,

这样总的比较次数为:

技术分享

因此,简单选择排序的最好、最坏和平均时间复杂度都为O(n^2)。

此外,该排序算法经过一趟排序可以确定一个元素的最终位置。简单选择排序是不稳定的排序算法。


参考资料:

《数据结构》  陈慧楠著 人民邮电出版社

排序算法之简单选择排序

标签:排序算法   c++   面试题   

原文地址:http://blog.csdn.net/happywq2009/article/details/45503139

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