网站模板 带后台上海网页设计班
2026/1/18 21:09:49 网站建设 项目流程
网站模板 带后台,上海网页设计班,微信小程序开发app,目前比较流行的公司网站建站技术选择排序详解 1.核心思想 将序列分为已排序的和未排序的区间#xff0c;每一轮从未排序的区间中找到最小值并与未排序区间的第一个元素交换#xff0c;逐步扩大已排序的区间 步骤 每一轮便利未排序的部分#xff0c;找到最小值所对应的下标并作标记交换最小值和未排序部分的…选择排序详解1.核心思想将序列分为已排序的和未排序的区间每一轮从未排序的区间中找到最小值并与未排序区间的第一个元素交换逐步扩大已排序的区间步骤每一轮便利未排序的部分找到最小值所对应的下标并作标记交换最小值和未排序部分的第一个元素重复上述步骤2.代码实现voidchoice(int*arr,intsz){intindex,temp;for(intk0;ksz-1;k){indexk;for(intik1;isz;i){if(arr[i]arr[index]){indexi;}}temparr[index];arr[index]arr[k];arr[k]temp;}}intmain(){intarr[]{2,3,4,5,6,1};intszsizeof(arr)/sizeof(arr[0]);choice(arr,sz);for(inti0;isz;i){printf(%-2d,arr[i]);}return0;}3. 步骤拆解要排序的数组是{ 2,3,4,5,6,1 }通过sz sizeof(arr) / sizeof(arr[0]);计算出要排序的元素个数那么一共排序sz-1次即可默认未排序部分的最小值为未排序部分的首元素index k通过循环对比找到真正的最小值出内层循环的时候index即为未排序部分最小值所对应的下标将未排序部分的最小值和第一个元素交换第一轮是将1和2进行交换交换完成后k1重复上述步骤特性分析时间复杂度最好、最坏、平均时间复杂度均为O(n^2)因为无论数组是否已有序都需要完成n-1轮的比较。空间复杂度O(1)仅使用了临时变量temp等属于原地排序。稳定性不稳定排序。例如数组[2, 1, 2]第一轮会将第一个2和1交换导致两个2的相对位置改变。适用场景数据量较小的场景因为交换次数少每轮最多1次交换比冒泡排序更高效。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询