#include <iostream> using namespace std; /* * 选择排序 * 基本思想 * 1)i从0到n-1,每次选择一个最小(最大)到i位置 * 2)总共需要选择n-1次 * 3)刚开始默认a[i]最小(最大) * 4)不要每次都交换,先记录索引号,最后一次再交换,可以提高性能 * 稳定性: 选择排序不稳定,例如 4 3 4 2 8, 4的先后顺序在交换的过程中被破坏了 * 时间复杂度:最好 O(n2) 最差 O(n2) 平均 o(n2) * 空间复杂度: O(1) * 适用情况 n小时较好 */ void SelectSort(int a[], int n) { int index, temp; //需要选择n-1次 for(int i=0; i<n-1; i++) { index = i; for(int j=i+1; j<n; j++) { if(a[j] < a[index]) { index = j;//记录最小的索引号 } } if(index != i) { //交换数据 temp = a[i]; a[i] = a[index]; a[index] = temp; } } } int main() { int a[] = {3, 8, 15, 7, 21, 6}; SelectSort(a, 6); for(int i=0; i<6; i++) { cout << a[i] << " "; } cout << endl; system("pause"); return 0; }