boxmoe_header_banner_img

欢迎来到KAZAMATA'S WEBSITE

加载中

选择排序


avatar
kazamata 2026年11月1日 2026年11月1日 50

选择排序作为比较简单的排序,广泛应用在数据量较少的地方

下面是它的原理:

list[5] = {4,2,7,3,1}

这里有一个杂乱无章的五个数组成的数组,我们现在要对他们由小到大的排序

在数据量足够大的时候,我们不知道最小的那个数在哪,所以我们可以假定,最小的那个数在第一个即min_location = 0

我们让这个这个list[min_location]与数组的每一个数进行比较,如果数组中存在比它更小的数,那么这个更小的数的位置值赋给min_location

min_location再继续执行剩下的比较,经过第一轮比较,我们就能得到整个数组中最小数的位置min_location,之后我们把整个最小数与数组的第一位借助第三方变量进行互换即

int temp;
temp = list[0];
list[0] = list[min_location];
list[min_location] = temp;

然后我们忽略数组的第一位数,对后面的数再进行比较,注意此次比较我们仍然不知道后面最小的那个数的位置在哪,所以依然把第一个数作为我们的最小值的位置即min_location = 1

然后重复上面的操作,一共四轮对比,就能写出下面的代码

for(x=0;x<n-1;x++)//选择排序 ,从小到大
{
    min_location = x;
    for(y=x+1;y<n;y++)//总是跳过前面已经比较的那个进行比较
    {
        if(list[y]<list[min_location])
        {
            min_location = y;
        }
    }
    temp = list[min_location];
    list[min_location] = list[x];
    list[x] = temp;
}
如果你有更好的算法,不妨点击此处提交
提交到 KAZAMATA DEV C++

无需登录:打开后填写昵称即可提交,并计入贡献排行榜

贡献排行榜

排行榜加载中…
上一次更新已经跑远了 计算中...
(‾◡◝) 本内容里的一些消息,可能已经跟不上时间啦~


评论(0)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码
后退
前进
刷新
复制
粘贴
全选
删除
返回首页
0%
目录
顶部
底部
文章导读