C++程序设计例解(01),第1张

C++程序设计例解(01),第2张

在编程的过程中,类似于解决其他复杂的智力问题,我们会用到包括思辨、直觉、技巧、灵感和经验在内的各种技巧和技术,最常用的工具就是抽象技术。一般来说,在初始阶段,由于问题的所有细节和求解方法都还不知道,所以主问题侧重于对问题的解进行全局决策,设计近似的求解步骤,这是一个非常抽象的算法。很多细节不太清楚,但是一些抽象的计算步骤被一个结构化的控制结构有机地联系起来。在抽象计算过程中,只确定计算目标,但涉及的操作对象和数据结构通常是不确定的。以计算目标为线索,进一步深入考虑抽象的计算步骤,可能会引出数据结构和操作对象的引入,对计算过程给出更详细的描述。它可能还包含一些抽象的计算步骤,但与原来的计算步骤相比,规模和难度都有所降低。对新生成的抽象计算步骤做进一步的深入考虑和分解,使计算步骤、运算对象、数据结构越来越清晰,抽象的东西越来越少。在相关细节确定之前,设计过程不会结束,后续的工作就是程序编码。
从这个角度来看,程序设计初期最重要的是确定算法和使用哪种数据结构。只要这个过程完成得好,后续的程序代码编写就会非常容易。所以在学习的时候,要从实例中得到启发,了解如何设计算法,设计数据结构,最后编译程序或函数。

01.试着根据下面给出的基数排序算法的思想,为整数链表写一个排序函数
解:
基数排序就是按表元素键值的每一位值进行排序。
有一个整数链表,表元素的键值都是不超过三位的整数。建议设置ABC形式的键值。其中A代表键值的百位数,B是十位数,C是个位数。首先,键值C拆分并链接链表。首先将链表拆分成多达10个队列链表,然后将拆分后的10个队列链表按照C的值从0到9的顺序汇集成一个链表。然后依次对键值中的B和A进行同样的拆分和链接操作,最后收集的链表按键值从小到大排序链接。例如,如果有一个链表,其元素根据键值的链接顺序是
153 678 56 288 457 653 721 876 433 254
根据键值拆分得到十个队列链表,它们的键值按以下顺序列出:
0:空链表
1: 721
2:空链表[/k0/]] 8: 678 288
9:空链表
顺序将它们收集在一起后,链表的键值顺序为:
721 153 653 433 254 56 876 457 678 288。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C++程序设计例解(01)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情