【模板】排序

选择排序SelectSort

概述

时间复杂度 空间复杂度 排序方式 稳定性
O(n^2) O(1) In-Place 不稳定

思路

每一趟从待排序的数据元素中选出最小(或最大)的一个,顺序放在待排序的数列的最前,直到全部待排序的数据元素排完。

操作

  1. c←1

  2. 在A[c, n] 这一段区间内选出最小值,记为A[x]

  3. 将A[x] 与A[c] 交换,c++

  4. 重复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]);
posted @ 2020-02-11 11:03  FirwoodLin  阅读(105)  评论(0编辑  收藏  举报