选择排序详解

目录

一、前言:

二、选择排序概念:

三、算法思路:

四、代码实现:


一、前言:

选择排序是不稳定的,比8948797这堆数据,选择排序的做法是先浏览一圈这堆数据,
然后在这堆数据中找出最小的元素和这堆数据中第一个元素交换位置,然后在浏览一圈找出剩下
数据中最小的元素,和第二个元素交换位置,以此类推


二、选择排序概念:

选择排序是一种简单直观的排序算法
它的工作原理是:第一次从待排序的数据元素中选出最小(最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾
以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。

三、算法思路:

对于一个元素个数为n的数组,我们可以将下标为n-1的元素,也就是这个数组的最后一个
元素,将这个元素和前面的所有的元素一一进行比较,也就是arr[n - 1]和arr[0]到arr[n-2]这个区间
的元素进行比较,比较完一趟之后,就确定了一个最大的元素了,然后第二趟比较就用arr[n-2]和
arr[0]到arr[n-3]这个区间进行比较,那么最后一次比较就是数组的一个元素和第二个元素进行比较。

四、代码实现:

void select_sort(int arr[], int size)
{
    //外层循环
    for (int i = size - 1; i > 0; i--)//拿i和前面的数组元素比较,内层循环是遍历整个数组,
        //为的就是使i能够和整个数组元素进行比较
    {
        for (int j = 0; j < i; j++)//因为是i之前的元素进行比较,从前往后遍历
            //for(int j=i-1;j>=0;j--)从后往前遍历
        {
            if (arr[i]<arr[j])//拿i和j区间的元素进行比较
            {
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
    }
}


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翘指

创作不易,一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值