当前位置:首页 > 生活百科

c语言选择排序法代码(c语言三种排序方法)

栏目:生活百科日期:2025-01-11浏览:0

选择排序,从字面上来说,就是要把一组数列中的元素给选择出来。

比方说给定一组数列,要求把其中的元素进行从小到大排序,那么只需要在进行每次排序的时候,都把最小的元素给选择出来,放在数列的第一位即可,第二次排序第三次排序同理,把后面数列中的最小元素给选择出来,放在已经排序好的元素的末尾,直到最后需要排序的元素没有为止。

这里有几个注意点:

1、第一次排序是遍历整个数列,把最小的元素给选择出来放在第一位。

2、第二次排序开始是遍历除了第一个元素外的后面的数列,把后面数列当中最小的元素给选择出来放到第一个元素后面一位。

3、第三次排序同理,直到最后一次排序把整个数列以从小到大的方式打印出来。

可以发现,在进行选择排序的过程中,每次最为重要的就是选择出一个最小的元素然后进行排序。

理清逻辑,画好流程图

为了让整个流程更加清晰,我画了一张流程图,也能在以后来帮助自己理解。

这里最容易搞混的地方,我在自己写代码理逻辑的时候也容易出现问题,那就是这个交换位置到底应该放在哪边,所以,为了讲的更清楚一些,我打算用实际例子来举例一下。

外循环是遍历数组中所有的元素,内循环是遍历除了当前元素的所有元素,然后要进行一个条件判断,也就是找出最小的元素,之后与当前元素交换位置。

那么内循环进行遍历的时候,可能会遍历到许多个比当前元素要小的元素,如果在这里进行位置交换,那岂不是就会交换好多次,与我们期望的不符,所以交换位置不能放在内循环里。

所以逻辑应该改为:在进行完内循环后,把最小元素给选择出来,然后再交换位置。

代码实现:

//选择排序#include&<stdio.h&>int main() {    int Select&[9] = {100, 3, 7, 6, 55, 29, 33, 10, -12};    int Temp = 0;    int index = 0;    for(int i = 0; i &< 9; i++){        index = i;        for(int j = i+1; j&<9;j++){            if(Select&[j]&<Select&[index]){                index = j;            }        }        Temp = Select&[i];        Select&[i] = Select&[index];        Select&[index] = Temp;        for(int i = 0; i &< 9; i++){            printf("%d ", Select&[i]);        }        printf("n");    }}

大家可以看到,交换位置的逻辑与冒泡排序和直接插入排序交换位置的逻辑并无多大差别,无非这里要进行交换位置的时候必须得把最小元素给选择出来再交换位置,而不是找到一个最小元素就直接交换位置。

测试结果

总结

总的来说,选择排序其实难度不大,但是如果刚开始学习数据结构的话,的确会有些不清楚,最重要的就是要理清逻辑,理清逻辑之后,因为内循环的主要目的是找到最小元素,如果在内循环中交换位置的话,那就没有意义了,所以要在内循环外交换位置。

总的来说,难度不大,测试结果也与我们最终期望得到的结果相同。

“c语言选择排序法代码(c语言三种排序方法)” 的相关文章

linux恢复出厂设置命令(linux系统恢复初始化)

Linux系统引导的顺序Linux系统引导的顺序BOIS的初始化和引导加载程序什么是BIOSGRUB程序和grub.conf文件什么是grubgrub配置文件g...

linux卸载软件的命令(linux安装与卸载命令)

本教程讲述了如何在Linux终端中安全地删除文件和文件夹。要想使用图形化界面删除计算机上的文件,你可能会直接将文件或文件夹拖拽到“垃圾箱”或“回收站”。或者你也...

人民日报评孟晚舟回国(没有任何力量能够阻挡中国前进的

9月25日,中国公民孟晚舟乘坐中国政府包机返回祖国。这是党中央坚强领导的结果,是中国政府不懈努力的结果,是全中国人民鼎力支持的结果,是中国人民的重大胜利。事实早...

小米盒子能看电视直播吗,小米电视盒子价格

对于小米盒子用户来说,不能收看电视直播一直是件令人头疼的事。虽然因为相关法规,小米盒子不带直播功能,但并不意味着我们不能通过其他手段开启。今天我就教大家如何让小...

中小企业如何做好网络推广,企业进行宣传推广的有效方式

随着互联网高速开展,互联网+传统销售网络与人员管理考核相结合,实现全网营销,据统计,现还有许多企业没能更好的投身于互联网中去,终归到底就是是企业对于网络营销推广...

word上下对齐怎么设置(word左右两列文字对齐推荐)

Word一步搞定所有名单对齐的方法。Word中有很多名单需要对齐的话,如果用敲空格键来对齐的话,很费时间,并且最终还是会发现两字三字的姓名没有对齐。下面小Q教您...

win10显示隐藏文件夹的设置方法(教你一键隐藏电脑文件

以Windows10操作系统为例,我们如何操作能显示或隐藏系统的文件和文件夹呢?如下方二张对比图片所示,我们看看有几个隐藏的文件夹。细心的读者看看是不是少了好多...

ae播放快捷键设置(ae快捷键大全表格)

1.合成窗口出现红色方框,无法预览画面?键盘按CapsLock键即可。2.中文字体出现乱码?选择中文字体,尽量不要用希奇古怪的中文字体,一般情况下方正、文鼎是没...

市场营销网怎么做,网络营销推广的重要性及渠道

(webpromotion)网络推广就是以企业产品或服务为核心内容,建立网站,再把这个网站通过各种免费或收费渠道展示给网民的一种推广方式,网络推广可以做到小投入...

二级域名是啥意思,一分钟带你了解二级域名的定义

1、什么是站内站站内站就是在主站下的目录下用不同的程序建设的网站,比如这样meitianjinbu.cn/collect/2、站内站的作用是什么这种做法可以短期...