C++算法之排序(3)——选择排序

今天,我来向大家介绍另一种排序方法:选择排序。这种排序思路非常简单,如图所示:

选择排序

就是把未排序的数列中最小(或最大)的数与未排序的第一个数交换。不多说了,上代码:

#include<bits/stdc++.h>
using namespace std; 
int a[110];
int n;
//选择排序 
int main(){
	
	cin >> n;  						//共有n个整数待排序 
	for(int i=0;i<n; i++)  	//输入n个整数 
		cin>>a[i];
	//下面对整个数组进行从小到大排序
	for(int i=0;i<n-1;i++){		//每次循环将第i小的元素放好 
		int tmpMin=i;  //用来记录从第i个到第n-1个元素中,最小的那个元素的下标 
		for(int j=i;j<n;j++){
			if(a[j]<a[tmpMin])
				tmpMin=j;
		}
	//下面将第i小的元素放在第i个位置上,并将原来占着第i个位置的那个元素挪到后面
		swap(a[i],a[tmpMin]);
	}
	//下面两行将排序好的n个元素输出
	for(int i=0;i<n;++i)
		cout << a[i] << endl;
	return 0;
}

结果:

结果

最坏时间复杂度:\large O(n^2)             

最好时间复杂度:\large O(n^2)             

平均时间复杂度:\large O(n^2)

0 0 vote
Article Rating
Subscribe
提醒
0 评论
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x