当前位置:首页 > 芯闻号 > 充电吧
[导读]1、简单选择排序算法(Simple Selection Sort)---- 通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换。

1、简单选择排序算法(Simple Selection Sort)

---- 通过n-i次关键字间的比较,从n-i+1个记录中选出关键字最小的记录,并和第i(1<=i<=n)个记录进行交换。


#define MaxSize 10
typedef struct 
{
	int r[MaxSize];
	int length;
}SqList;

void swap(SqList *L,int i,int j)
{
	int t = L->r[i];
	L->r[i] = L->r[j];
	L->r[j] = t;
}
void SelectSort(SqList *L)
{
	int i,j,min;
	for(i=0;ilength-1;i++)
	{
		min = i;		//将当前下标定义为最小值下标
		for(j=i+1;jlength;j++)
		{
			if(L->r[j]r[min]) //注意不是和第i个进行比较,是和前面的最小值进行比较
			{
				min = j;//min是未排序的最小值的下标
			}
		}
		if(i!=min)
		{
			swap(L,i,min);
		}
	}

}
int main()
{
	SqList *L = (SqList*)malloc(sizeof(SqList));
	int a[MaxSize] = {9,1,5,8,3,7,4,6,2,0};
	for(int i=0;ir[i] = a[i];
	}
	L->length = MaxSize;
	SelectSort(L);
	cout<<"排序后的序列如下:"<<endl;
	for(int i=0;ilength;i++)
	{
		cout<r[i]<<" ";
	}
	cout<<endl;
	system("pause");
	return 0;
}

最大的特点是:交换移动数据次数相当少。无论最好最差的情况,其比较次数都是一样的多,第i趟排序需要进行n-i次关键字的

比较,此时需要比较(n-1)+(n-2)+....+1=n(n-1)/2次。

对于交换次数而言,最好的时候,交换为0次,最差的时候,交换次数是n-1次,总的时间复杂度是O(n^2).

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭