本文共 899 字,大约阅读时间需要 2 分钟。
SelectSort 选择排序算法:
总的时间复杂度为O(n^2)
思路是,外循环先遍历第一个数至倒数第二个,设置最小的那个数的索引,内循环为从i+1开始遍历到最后一个,找出有没有比当前最小数索引小的索引,若有,进行交换,难度不大~
性能优于冒泡排序
//选择排序(排序后为从小到大)#include程序输出结果:#include using namespace std;void SelectSort(int (&a)[7]){//数组作为引用形参传入,使用在此修改对原数组也有效 int aSize = sizeof(a) / sizeof(a[0]);//取数组的大小 int min;//设置最小的那个数的索引 for (int i = 0; i < aSize - 1; ++i){//遍历第一个数至倒数第二个 min = i;//初始最小的数的索引为i for (int j = i + 1; j < aSize;++j){//从i+1开始遍历到最后一个 if (a[j] < a[min]){//若成立,则将小的那个数的索引j赋给min min = j; } } if (min != i){//如果最小的数的索引不等于初始的i,则进行交换,将此时最小的数换到i位置 swap(a[min], a[i]); } }}int main(){ int a[] = {12, 42, 6, 17, 32, 4, 19 }; cout << "Before Sorted:" << endl; for (size_t i = 0; i < 7; ++i){//输出 cout << a[i] << " "; } cout << endl; SelectSort(a); cout << "After Sorted:" << endl; for (size_t i = 0; i < 7; ++i){//输出 cout << a[i] << " "; } cout << endl; return 0;}