直接选择选择排序也是八大排序之一的排序算法,虽然实际应用上其实并不会选择它来进行排序,但它的思想和价值还是十分值得我的去学习的!
选择排序的思想就是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。
每次遍历找到最大的和最小的俩个数en来存放在开头和末尾然后再一次重新遍历直到数组全部遍历完毕
上图每次都是找到其中一个数来进行排序,其实我们实际代码是可以优化一下的每次从
🍸 代码演示:
// 选择排序
void SelectSort(int* a, int n)
{
int begin = 0,end = n-1;
while (begin < end)
{
int mini = begin, maxi = begin;
for (int i = begin+1; i <= end; i++)
{
if (a[mini] > a[i])
{
mini = i;
}
if (a[maxi] < a[i])
{
maxi = i;
}
}
Swap(&a[mini], &a[begin]);
if (maxi == begin)
{
maxi = mini;
}
Swap(&a[maxi], &a[end]);
begin++;
end--;
}
}
📑 代码结果:
直接选择排序的特性总结: