- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
排序算法性能分析.
微软技术部2007年秋季招新技术部大二以上笔试题
071323 李启磊
(50分)比较,冒泡排序,选择排序,插入排序,希尔排序,快速排序的性能和特点,说说你能从这里发现什么。
要求:
能给出性能从小到大的顺序
能对你给出的顺序一个合理的解释
在不同的应用环境和要求下,不同的排序算法有不同的表现,因此不能笼统的说哪种算法优或劣。
冒泡排序、插入排序、希尔排序以及快速排序对数据的有序性比较敏感,尤其是冒泡排序和插入排序;相比而言,选择排序不关心表的初始次序,它的最坏情况的排序时间与其最佳情况没多少区别,其比较次数为,但选择排序可以非常有效的移动元素。因此对次序近乎正确的表,选择排序可能比插入排序慢很多。冒泡排序在最优情况下只需要经过n-1次比较即可得出结果(即对于完全正序的表),最坏情况下也要进行次比较,与选择排序的比较次数相同,但数据交换的次数要多余选择排序,因为选择排序的数据交换次数顶多为,而冒泡排序最坏情况下的数据交换。冒泡排序不一定要进行趟,但由于它的记录移动次数较多,,但是它在元素移动方面效率非常低下,因为它只与毗邻的元素进行比较,效率比较低。希尔排序实际上是预处理阶段优化后的插入排序,一般而言,在比较大时,希尔排序要明显优于插入排序。快速排序采用的“大事化小,小事化了”的思想,用递归的方法,将原问题分解成若干规模较小但与原问题相似的子问题进行求解。快速算法的平均时间复杂度为,平均而言,快速排序是基于关键字比较的内部排序算法中速度最快者;但是由于快速排序采用的是递归的方法,因此当序列的长度比较大时,对系统栈占用会比较多。快速算法尤其适用于随机序列的排序。
因此,平均而言,对于一般的随机序列顺序表而言,上述几种排序算法性能从低到高的顺序大致为:冒泡排序、插入排序、选择排序、希尔排序、快速排序。但这个优劣顺序不是绝对的,在不同的情况下,甚至可能出现完全的性能逆转。
对于序列初始状态基本有正序,可选择对有序性较敏感的如插入排序、冒泡排序、选择排序等方法。
对于序列长度比较大的随机序列,应选择平均时间复杂度较小的快速排序方法。
各种排序算法都有各自的优缺点,适应于不同的应用环境,因此在选择一种排序算法解决实际问题之前,应当先分析实际问题的类型,再结合各算法的特点,选择一种合适的算法。
(50分)用你熟悉的语言(C++, Java, C#等)写一个链表,把代码写在下面(自己另附一张纸),要求实现:
在链表头,尾,以及给定的元素后面插入的功能,
返回链表元素个数的功能
删除链表头,链表尾的功能
析构函数
拷贝构造函数(*C++选做,java, C#必做)
实现堆排序(本科生可不做)
要求:
不可以使用内置类库或模板库
最好用C++,如果用java或者C#,要求另外实现:
拷贝构造函数
区段插入(给出另一个链表中间的一段,把这段插入到当前链表中)
程序如下:(时间仓促,未完成堆排序的内容)
//////////////////////////////////////////////////////////////////////////
// 链表类头文件 2007-09-22 李启磊
//////////////////////////////////////////////////////////////////////////
struct Node{
int nEntry;
Node *pNext; // 下一个结点
Node *pFore; // 上一个结点
Node();
Node(int nValue, Node * pNextNode = NULL, Node * pForeNode = NULL);
};
Node::Node()
{
pNext = NULL;
pFore = NULL;
nEntry = 0;
}
Node::Node(int nValue, Node * pNextNode /* = NULL */,Node * pForeNode /* = NULL */)
{
nEntry = nValue;
pNext = pNextNode;
pFore = pForeNode;
}
class CMyListClass
{
public:
CMyListClass(void);
CMyListClass(const CMyListClass OldList);
~CMyListClass(void);
int GetNodeNums(void);
bool InsertNode(Node * pNode, Node * pNewNode);
bool InsertNode(Node
您可能关注的文档
- 掌握心理规律_端正从政心态..doc
- 掌握托福阅读答题节奏对高分意义重大..docx
- 掌握研发全球化契机建构研发在地化环境..doc
- 掌握经济规律与领导干部决策思维的养成铸就科学精神与领导干部创新实践的磨砺..doc
- 掌握的功能(一)..docx
- 掌握沥青路面施工方法..doc
- 掌握股票财务基本面知识分析技巧3..doc
- 掌握重点突破难点课题设计是关键..doc
- 掌政模式发展情况及信用评估机制的合理性讨论..doc
- 掌握阅读策略提升阅读能力..doc
- 2025年网络文学平台版权运营模式创新与版权保护体系构建.docx
- 数字藏品市场运营策略洞察:2025年市场风险与应对策略分析.docx
- 全球新能源汽车产业政策法规与市场前景白皮书.docx
- 工业互联网平台安全标准制定:安全防护与合规性监管策略.docx
- 剧本杀剧本创作审核标准2025年优化与行业自律.docx
- 2025年新能源电动巡逻车在城市安防中的应用对城市环境的影响分析.docx
- 全渠道零售案例精选:2025年行业创新实践报告.docx
- 2025年网约车司乘纠纷处理机制优化与行业可持续发展报告.docx
- 2025年宠物烘焙食品市场法规政策解读:合规经营与风险规避.docx
- 2025年宠物行业数据安全监管政策影响分析报告.docx
文档评论(0)