网站建设流程和方法,重庆市住房和城乡建设信息网官网,黄志达设计公司官网,高端网站建设万维科技引言
排序算法学习第二弹之选择排序#xff0c;这也是入门的一个基础算法。
算法描述 从序列中选择最大#xff08;小#xff09;的元素#xff0c;放在序列的结束位置#xff08;下标为n-1#xff09; 从剩下的未排序序列中继续选择最大#xff08;小#xff09;的…引言
排序算法学习第二弹之选择排序这也是入门的一个基础算法。
算法描述 从序列中选择最大小的元素放在序列的结束位置下标为n-1 从剩下的未排序序列中继续选择最大小的元素放在未排序序列末尾 重复步骤2直到排序完成
时间复杂度
可以看到selectionsort函数代码中有两层循环因比时间复杂度为O(n^2)
代码实现 //每次找到最大小放在最左右端
#includebits/stdc.h
using namespace std;
template typename T
void selectionsort(T arr[],int len){for(int i0;ilen -1;i){T max 0;for(int j1;jlen-i;j){if(arr[j]arr[max]){maxj;}}swap(arr[max],arr[len-i-1]);}
}
int main(){int arr[] {61, 17, 29, 22, 34, 60, 72, 21, 50, 1, 62};int len (int) sizeof(arr) / sizeof(*arr);selectionsort(arr, len);for (int i 0; i len; i) {cout arr[i] ;}cout endl;float arrf[] {17.5, 19.1, 0.6, 1.9, 10.5, 12.4, 3.8, 19.7, 1.5, 25.4, 28.6, 4.4, 23.7, 5.4};int lenf sizeof(arrf) / sizeof(*arrf);selectionsort(arrf, lenf);for (int i 0; i lenf; i) {cout arrf[i] ;}return 0;
}运行截图