2026/5/21 15:24:17
网站建设
项目流程
如何增加企业网站被收录的几率,义乌网站建设工作室,网站底版照片怎么做,管理咨询公司ppt简单选择排序的核心逻辑是#xff1a;在每趟排序中从未排序的部分选出最小#xff08;或最大#xff09;元素#xff0c;将其与该部分的第一个元素交换位置#xff0c;从而逐步构建有序序列。通过 n-1 趟选择#xff0c;完成整个数组的排序。
void SelectSort(int data[]…简单选择排序的核心逻辑是在每趟排序中从未排序的部分选出最小或最大元素将其与该部分的第一个元素交换位置从而逐步构建有序序列。通过 n-1 趟选择完成整个数组的排序。voidSelectSort(intdata[],intn){inti,j,k,tmp;for(i0;in-1;i){ki;// 假设第i个位置就是最小值的位置for(ji1;jn;j)/* 找出最小关键字的下标 */if(data[j]data[k])kj;if(k!i){// 若最小值不在第i位则交换tmpdata[i];data[i]data[k];data[k]tmp;}}}性能分析如下比较次数固定为n(n−1)2\frac{n(n-1)}{2}2n(n−1)时间复杂度为O(n2)O(n^2)O(n2)不随输入数据分布变化。移动次数最好情况已有序0 次最坏情况逆序每趟都发生交换共3(n−1)3(n-1)3(n−1)次移动每次交换3次赋值。稳定性不稳定。例如当有相同关键字的元素时交换可能导致它们相对顺序改变。空间复杂度O(1)O(1)O(1)仅使用常量额外空间。简单选择排序是不稳定的原因在于它在每趟选择中将最小元素与未排序部分的首元素进行直接交换而不管这两个元素是否具有相同的值。这种交换可能改变相同关键字元素之间的相对顺序从而破坏稳定性。 举例说明假设有一个待排序的数组其中包含两个相同的元素5a和5b下标 a、b 用于区分先后顺序原始序列[5a, 2, 5b, 1]我们希望排序后相同元素5a和5b的相对位置保持不变即5a仍在5b前面才能称为稳定排序。执行选择排序过程第1趟从[5a, 2, 5b, 1]中找最小值 →1下标3将1与第一个元素5a交换结果[1, 2, 5b, 5a]此时原本在后面的5a被换到了最后而5b却排在了前面。最终结果中5b出现在5a前面改变了相同关键字元素的相对顺序。 因此该算法是不稳定的。✅ 总结尽管选择排序逻辑清晰、空间效率高但由于其通过“交换”而非“插入”来调整位置容易打乱相等元素的原始次序所以不具备稳定性。