• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • YouClaw
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
疾风知劲草,智者必怀仁。
路漫漫其修远兮,吾将上下而求索...
博客园    首页    新随笔    联系   管理    订阅  订阅

随笔分类 -  Data Structure&Algorithm

排序算法总结

摘要:本博文摘自伍迷老师的《大话数据结构》,想学数据结构的,大大的推荐此书... 事实上,目前还没有十全十美的排序算法,有优点就会有缺点,即使是快速排序法,也只是在整体性能上优越,它也存在排序不稳定、需要大量辅助空间、对少量数据排序无优势等不足。因此我们就来从多个角度来剖析一下提到的各种排序的长与短。 我们将7种算法的各种指标进行对比,如表9‐10‐1所示。 表9‐10‐1排序方法 平均情况 最好情况 最坏情况 辅助空间 稳定性冒泡排序 O(n2) O(n) O(n2) O(1) 稳定简... 阅读全文
posted @ 2011-10-27 16:40 疾风中的劲草 阅读(1237) 评论(0) 推荐(0)
归并排序学习

摘要:归并排序(Merging Sort)就是利用归并的思想实现的排序方法。它的原理是假设初始序列含有n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并,得到⌈n/2⌉(⌈x⌉表示不小于x的最小整数)个长度为2或1的有序子序列;再两两归并,……,如此重复,直至得到一个长度为n的有序序列为止,这种排序方法称为2路归并排序。代码:#define MAXSIZE 10 /* 用于要排序数组个数最大值,可根据需要修改 */typedef struct{ int r[MAXSIZE+1]; /* 用于存储要排序数组,r[0]用作哨兵或临时变量 */ int length; ... 阅读全文
posted @ 2011-10-27 16:06 疾风中的劲草 阅读(659) 评论(0) 推荐(0)
希尔排序学习

摘要:希尔排序的思想是分治法,以增量以某种方式递减的方法将待排序列分成几个的小序列,然后序列内进行直接插入排序。这个排序方法代码简洁易理解,如下:void ShellSort(int a[],int n){ int d = n/2;//初始增量设为待排序列长度的一半 int temp,i,j; while(d>=1) { for (i=d;i<n;i++) { if (a[i] < a[i-d]) { temp = a[i];//暂存需要插入的记录 for (j=i-d;j>=0 && a[j] > a[i];j-=d) { a[j+d] = a[j]; 阅读全文
posted @ 2011-10-25 15:16 疾风中的劲草 阅读(1040) 评论(0) 推荐(0)
堆排序学习(摘自《大话数据结构》)

摘要:伍老师的《大话数据结构》是本思路清晰又讲解形象的书,十分适合入门者学习。我对堆排序以前很是害怕,所以特意仔细阅读了相关堆排序的内容,感觉完全理解啦。摘抄下来存档,方便自己随时查阅和复习。堆是具有下列性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如果按照层序遍历的方式给结点从1开始编号,则结点之间满足如下关系:k[i]≥k[2i]&&k[i]≥k[2i+1] 或者k[i]≤k[2i]&&k[i]≤k[2i+1],其中,0<i<n/2。为什么i<n/2呢?现在回 阅读全文
posted @ 2011-10-25 11:29 疾风中的劲草 阅读(703) 评论(0) 推荐(0)
常见的单链表题目

摘要:1、判断一个单链表中是否有环思路:给定两个指针fast和low都指向头结点,然后low每次前进一步,fast每次前进两步,如果此单链表中有环,那么fast和low一定会相遇,否则fast一定会先遇到null。实现代码如下:bool isCircle(LinkList *head){ LinkList *fast = head;//快指针 LinkList *low = head;//慢指针 while(low->next != NULL && fast->next->next != NULL) { low = low->next; fast ... 阅读全文
posted @ 2011-10-25 10:15 疾风中的劲草 阅读(1621) 评论(0) 推荐(0)

博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3