从HelloWorld到第一个APK:用Android Studio 2022.3.1完整走一遍Android应用发布流程
2026/5/16 16:19:09
简单选择排序的核心逻辑是:在每趟排序中从未排序的部分选出最小(或最大)元素,将其与该部分的第一个元素交换位置,从而逐步构建有序序列。通过 n-1 趟选择,完成整个数组的排序。
voidSelectSort(intdata[],intn){inti,j,k,tmp;for(i=0;i<n-1;i++){k=i;// 假设第i个位置就是最小值的位置for(j=i+1;j<n;j++)/* 找出最小关键字的下标 */if(data[j]<data[k])k=j;if(k!=i){// 若最小值不在第i位,则交换tmp=data[i];data[i]=data[k];data[k]=tmp;}}}性能分析如下:
假设有一个待排序的数组,其中包含两个相同的元素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前面,改变了相同关键字元素的相对顺序。👉 因此,该算法是不稳定的。
尽管选择排序逻辑清晰、空间效率高,但由于其通过“交换”而非“插入”来调整位置,容易打乱相等元素的原始次序,所以不具备稳定性。