首页 理论教育C语言常用排序方法-C语言程序设计基础(第3版)

C语言常用排序方法-C语言程序设计基础(第3版)

【摘要】:针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。②不考虑已排好序的数据,将剩下的数据作为待排序列。编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。

排序是计算机处理数据的一种常见重要操作,其作用是将数列中的数据按照特定顺序,如升序或降序重新排列组织。排序分为内部排序和外部排序。在进行内部排序时,要求被处理的数据全部进入计算机系统的内(主)存储器,整个排序过程都在计算机系统的内存储器中完成。针对不同的实际应用,数据排序方法有很多种。本节介绍两种常用排序方法的基本思想和实现方法,帮助读者初步理解排序方法的计算机解决思路。

1.冒泡排序(Bubble sorting)

冒泡排序算法的基本思想是两两比较待排序数据序列中的相邻数据,根据比较结果来交换这两个数据在序列中的位置。其算法基本概念可描述如下:

①从待排序列中第一个位置开始,依次比较相邻两个位置上的数据,若是逆序则交换,一趟扫描后,最大(或最小)的数据被交换到了最后,这个过程称为一趟排序。

②不考虑已排好序的数据,将剩下的数据作为待排序列。

③重复①、②两步直到排序完成,n个数据的排序过程最多进行n-1趟。

【例6.19】 编写程序实现冒泡排序算法,对随机生成的10个3位整数按升序进行排序并输出。

程序的一次执行结果为:

数据排序前:169 999 306 717 383 243 702 652 249 612

数据排序后:169 243 249 306 383 612 652 702 717 999

2.选择排序(Select sorting)(www.chuimin.cn)

选择排序法的基本思想是对于待排的N个数据,在其中寻找最大(或最小)的数值,并将其移动到最前面作为第一个数据;在剩下的N-1个数据中用相同的方法寻找最大(或最小)的数值,并将其作为第二个数据;以此类推,直到将整个待排数据集合处理完为止(只剩下一个待处理数据)。选择排序的基本方法是:

①在所有的数据中选取最大(或最小)的一个,并将其与第一个数据交换位置。

②将上次操作完成后剩下的数据构成一个新数据集合。

③在新数据集的所有数据中选取最大(或最小)的一个,并将其与新数据集中的第一个数据交换位置。

④如果还有待处理数据,转到②。

【例6.20】 编写程序实现选择排序算法,随机生成长度为50的英语字母字符串,将字符串中的数据按升序进行排序并输出。

程序的一次运行结果为:

数据排序前:jDwnuxpVULEUYrgcDjUSEqCavvW fGtdeCoDSZKkSiHpZoIdrmpS

数据排序后:CCDDDEEGHIKLSSSSUUUVWYZZacddefgijjkmnoopppqrrtuvvwx