【模板】排序
选择排序SelectSort
概述
时间复杂度 | 空间复杂度 | 排序方式 | 稳定性 |
---|---|---|---|
O(n^2) |
O(1) |
In-Place |
不稳定 |
思路
每一趟从待排序的数据元素中选出最小(或最大)的一个,顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。
操作
c←1
在A[c, n] 这一段区间内选出最小值,记为A[x]
将A[x] 与A[c] 交换,c++
重复2-3 步,直到c=n
代码
void SelectSort(int R[],int n){//sort from 1 to n
for(int i=1;i<=n-1;i++){//n-1 rounds
int k=i;
for(int j=i+1;j<=n;j++)
if(R[j]<R[k]) k=j;
if(k!=i)
swap(R[i],R[k]);//in <algorithm>
//debug
for(int i=1;i<=n;i++)
printf("%d ",R[i]);
printf("\n");
}
}
STL快速排序sort()
以升序
排序范围 [first, last)
中的元素。不保证维持相等元素的顺序。
sort(首指针 ,尾指针+1 [,cmp]);