c语言插入法排序怎么实现
c语言插入法排序怎么实现
今天小编给大家分享一下c语言插入法排序怎么实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
插入法排序较为复杂,其基本工作原理是抽出一个数据,在前面的数据中寻找相应的位置插入,直到完成排序。以数字9、6、15、4、2为例,采用插入法实现数字按从小到大进行排序,插入法排序过程如图8.23所示。
图8.23 插入法排序过程示意图
从图8.23可以发现,在第一次排序过程中将第一个数取出来,并放置在第一个位置;然后取出第二个数,并将第二个数与第一个数进行比较,如果第二个数小于第一个数,则将第二个数排在第一个数之前,否则将第二个数排在第一个数之后;然后取出下一个数,先与排在后面的数字进行比较,如果当前数字比较大则排在最后,如果当前数字比较小,还要与之前的数字进行比较,如果当前数字比前面的数字小,则将当前数字排在比它小的数字和比它大的数字之间,如果没有比当前数字小的数字,则将当前数字排在最前方;依此类推,不断取出未进行排序的数字与排序好的数字进行比较,并插入到相应的位置,直到将一组数字按从小到大排序为止。
下面通过实例来看一下如何通过程序使用插入法实现数组元素从小到大的排序。
利用插入排序法,从少到多输出显示老年人的数量
政府福利,根据老年人数发放养老补助。在本实例中,声明了一个整型数组和两个整型变量,其中整型数组用于存储用户输入的数字,而两个整型变量分别作为两个元素交换时的中间变量和记录数组元素位置,然后通过双层循环进行插入法排序,最后将排好序的数组进行输出。具体代码如下:
01#include 运行程序,显示结果如图8.24所示。 从该实例代码和运行结果可以看出: 以上就是“c语言插入法排序怎么实现”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。
图8.24 插入法排序运行图
(1)声明一个整型数组a,并通过键盘为数组元素赋值。
(2)设置一个嵌套循环,第一层循环为后9个数组元素,将第二个元素赋值给中间变量,并记录前一个数组元素的下标位置。在第二层循环中,首先要判断是否符合循环的条件,允许循环的条件是记录的下标位置必须大于等于第一个数组元素的下标位置,并且中间变量的值小于之前设置下标位置的数组元素,如果满足循环条件,则将设置下标位置的数组元素值赋值给当前的数组元素。
(3)然后将记录的数组元素下标位置向前移动一位,继续进行循环判断。内层循环结束以后,将中间变量中保存的数值赋值给当前记录的下标位置之后的数组元素,继续进行外层循环,将数组中下一个数组元素赋值给中间变量,再通过内层循环进行排序。
(4)依此类推,直到循环结束,这时就将数组元素按照从小到大的顺序重新排列了。
(5)循环输出数组中的元素,并在输出5个元素后进行换行,在下一行输出后面的5个元素。
推荐阅读
-
windows安装touble c
近期有些网友想要了解windows?安装touble的相关情况,小编通过整理给您分享一下。为什么现在还需要TurboC?在当今V...
-
C/C++如何获取CAN信号
C/C++如何获取CAN信号本篇内容主要讲解“C/C++如何获取C...
-
C语言怎么通过二分查找实现猜数字游戏
C语言怎么通过二分查找实现猜数字游戏本文小编为大家详细介绍“C语言...
-
C语言数据结构中的线性表怎么使用
C语言数据结构中的线性表怎么使用这篇文章主要介绍“C语言数据结构中...
-
C语言的数据结构怎么理解
C语言的数据结构怎么理解这篇文章主要介绍了C语言的数据结构怎么理解...
-
C语言与C++中内存管理的方法
C语言与C++中内存管理的方法这篇文章主要介绍了C语言与C++中内...
-
C语言链式队列与循环队列怎么实现
C语言链式队列与循环队列怎么实现这篇文章主要介绍了C语言链式队列与...
-
C语言冒泡排序怎么实现
C语言冒泡排序怎么实现这篇文章主要介绍了C语言冒泡排序怎么实现的相...
-
C语言如何实现斐波那契数列
C语言如何实现斐波那契数列这篇文章主要介绍了C语言如何实现斐波那契...
-
C语言如何实现无符号数和有符号数间的运算
C语言如何实现无符号数和有符号数间的运算本篇内容主要讲解“C语言如...