数据排序程序设计
扫描二维码
随时随地手机看文章
数据排序就是将一批数由小到大(升序)排列,或由大到小(降序)排列。下面介绍无符号数据升序排序程序设计。
最常用的数据排序算法是冒泡法。冒泡法是相邻数互换的排序方法,因其过程类似水中气泡上浮,故称冒泡法。排序时,从前向后进行相邻两个数的比较,如果数据的大小次序与要求的顺序不符时,就将两个数互换;否则,顺序符合要求就不互换。如果进行升序排序,应通过这种相邻数互换方法,使小数向前移,大数向后移。如此从前向后进行一次次相邻数互换(冒泡),就会把这批数据的最大数排到最后,次大数排在倒数第二的位置,从而实现一批数据由小到大的排列。
假设有7个原始数据的排列顺序为6、4、1、2、5、7、3。第一次冒泡的过程是:
如此进行,各次冒泡的结果如下:
由上面的冒泡法可以看出,对于,n个数,理论上应进行(n-l)次冒泡才能完成排序,但实际上有时不到(n-1)次就已完成排序。例如,上面的7个数,应进行6次冒泡,但实际上第4次冒泡时就已经完成了排序。如何判定排序是否已经完成呢?就是看各次冒泡中是否有互换发生,如果有数据互换,则排序还没完成;否则就表示已经排好序。在程序设计中,常用设置互换标志的方法,用该标志的状态表示在一次冒泡中是否有互换进行。下面介绍具体的冒泡法排序过程。
一批单字节无符号数,以RO为首地址指针,R2中为字节数,将这批数进行升序排列。程序框图如图4-2所示。程序如下: