首页 理论教育 STC15W4K32S4系列8051单片机的数据排序程序

STC15W4K32S4系列8051单片机的数据排序程序

时间:2023-11-02 理论教育 版权反馈
【摘要】:下面介绍无符号数据的升序排序程序设计方法。最常用的数据排序算法是冒泡法。冒泡法是相邻数互换的排序方法,因其过程类似水中气泡上浮,故称为冒泡法。进行升序排序时,应通过这种相邻数互换方法,使小的数据向前移。经过一次次相邻数据互换,就把一批数据的最大数排到最后,次大数排在倒数第二的位置,从而实现了这一批数据由小到大排序。参考程序如下:图5-11 单字节无符号数排序

STC15W4K32S4系列8051单片机的数据排序程序

数据排序就是将一批数按照升序或降序排列。下面介绍无符号数据的升序排序程序设计方法。

最常用的数据排序算法是冒泡法。冒泡法是相邻数互换的排序方法,因其过程类似水中气泡上浮,故称为冒泡法。排序时从前向后进行相邻两个数的比较,如果数据的大小次序与要求的顺序不相符,就将两个数互换,否则不互换。进行升序排序时,应通过这种相邻数互换方法,使小的数据向前移。经过一次次相邻数据互换,就把一批数据的最大数排到最后,次大数排在倒数第二的位置,从而实现了这一批数据由小到大排序。

假设8个原始数据的排列顺序为8,4,5,7,3,9,0,1。第一次冒泡的过程如下:

978-7-111-51881-5-Chapter05-62.jpg

如此进行,各次冒泡的结果如下:

978-7-111-51881-5-Chapter05-63.jpg

由以上的冒泡法可以看出,对于n个数,理论上应进行(n-1)次冒泡才能完成排序,但实际上有时不到(n-1)次就已完成排序。例如,上面的8个数,应进行7次排序,但是实际上到第6次就已经完成了排序。判断排序是否完成的方法是看各次冒泡中是否有互换发生,如果有,说明排序还没有完成,否则就表示已经排好。在程序设计中,常用设置互换标志的方法,标记在一次冒泡中是否有互换进行。下面介绍具体冒泡程序。(www.xing528.com)

【例5-27】 一批单字节无符号数以R0为首地址指针,R2为字节数,将这批数按升序排列。程序流程如图5-11所示。参考程序如下:

978-7-111-51881-5-Chapter05-64.jpg

图5-11 单字节无符号数排序

978-7-111-51881-5-Chapter05-65.jpg

978-7-111-51881-5-Chapter05-66.jpg

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈