首页 理论教育 优化:C语言程序设计-选择排序算法

优化:C语言程序设计-选择排序算法

时间:2023-10-20 理论教育 版权反馈
【摘要】:选择排序算法的基本思路如下:先假定第1 个元素值最小,然后将其与其后的各个元素值逐个比较,若后面的元素值小于第1 个元素值,则将该元素与第1 个元素交换数值。第一轮扫描完成后,已确定最小数及其排列位置。按同样的方法多次扫描处理,直到最后只剩下一个元素未排好序时结束,整个数组排序完成。选择排序法同样需要用循环的嵌套来实现。在程序设计中,可对以上选择排序算法进行优化。选择排序法实现排序。

优化:C语言程序设计-选择排序算法

选择排序算法的基本思路(按从小到大顺序排序)如下:

(1)先假定第1 个元素值最小,然后将其与其后的各个元素值逐个比较,若后面的元素值小于第1 个元素值,则将该元素与第1 个元素交换数值。比较完所有元素后,第1 个元素的值真正成为数组中最小的值。第一轮扫描完成后,已确定最小数及其排列位置。

(2)然后,假定第二个元素是未排序元素中值最小的元素,用同样的方法与其后的元素逐个进行确认比较。第二轮扫描完成后,第二个元素真正成为数组中第二小的元素。

(3)按同样的方法多次扫描处理,直到最后只剩下一个元素未排好序时结束,整个数组排序完成。

选择排序法同样需要用循环的嵌套来实现。

在程序设计中,可对以上选择排序算法进行优化。其实,在每轮扫描中,当找到一个比假定最小元素还小的元素时,并不能完全确定该元素是真正最小的元素,只有当扫描完整个数组后才能确定真正最小的元素。(www.xing528.com)

如果每次找到比假定最小值还小的元素时,均将其与假定最小的元素交换值,程序在运行时,可能会频繁交换数据,影响程序执行的效率。所以,可以在找到一个比假定最小元素还小的元素时,先记下该元素的下标,而不交换值;当扫描结束后,才将找到的最小值与指定位置的元素交换值。这样可以减少数据交换的次数,提高程序执行的效率。

【例7.17】选择排序法实现排序。

程序代码:

运行结果:

调试技巧:此程序数据输入量大,上机调试很麻烦。可以先调试10 个数的排序,程序调试通过后,只要简单修改几个数据即可实现给100 个数排序。还可以先给数组赋一些固定值,重点调试排序的关键代码,程序调试通过后,再添加数组的输入功能。

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

我要反馈