排序算法学习
文章平均质量分 76
zybjtu
这个作者很懒,什么都没留下…
展开
-
c++实现插入排序模版
简单说一下,插入排序的原理:就像从小到大插入扑克牌一样,插入新牌之前,插入的牌序已经是从小到大排列好。所以,第一张牌即是i = 0 的那张,就应该从 i = 1开始插入。j是后来要插入的位置。具体说来,程序流程如下: 具体说来: #include using std::cout;using std::endl; #ifndef Insert_Sort_HHH#define Ins原创 2012-11-28 23:15:56 · 513 阅读 · 0 评论 -
c++模板实现归并排序
最近正在学习各种排序算法,今天实现了归并排序。先上代码: #include "stdafx.h" #include template void Merge(T A[],const int& p,const int& q,const int& r) // p表示开始排序的位置,q是结束位置,r是断点 { T *A_array_help = new原创 2012-11-28 09:42:03 · 509 阅读 · 1 评论 -
冒泡排序
冒泡排序是在数据结构与算法中最为简单的一个排序方法,属于交换排序的范畴,当然也是原地排序。其机理是逐次比较,把最大的值冒出来,放在数组最后一个位置。同理,从头开始,将次大值冒出来放在数组倒数第二个位置,直到排序完成。显然两层循环嵌套,其最坏的情况是O(n-1)+O(n-2)+...+O(1),结果为O(n * n),在排序算法中属于效率较低的一类。 templatevoid Bubble原创 2012-11-29 08:31:52 · 460 阅读 · 0 评论 -
经典排序算法之bin排序
bin排序,顾名思义就是把对象放在盒子里进行排序,盒子本身已经代表了大小,所以,只要把对象放在对应的盒子,即可看做完成了排序,其排序时间复杂度为O(n)可以说是一种较为快捷的排序,然而,由于不是本地排序,所以空间复杂度较高。 结合链表特性,将bin排序放在了链表里面如下: .h #include #include template class CLinearLink; templat原创 2013-12-04 23:28:51 · 1408 阅读 · 0 评论 -
经典数据结构之最大堆
最大堆和最小堆是常用的优先队列。 其概念也比较简单,用树的方式描述,就是,父节点比子节点大(最大堆),小则为最小堆。最大堆和最小堆广泛用在有先后顺序的任务调度中。比如cpu的任务调度等。 先上代码,后面再详细解释和补充我的看法。 头文件 #ifndef CBINARYTREE_H_INCLUDED #define CBINARYTREE_H_INCLUDED #include templ原创 2014-08-06 23:44:35 · 612 阅读 · 0 评论