查找排序
文章平均质量分 70
dazhong159
这个作者很懒,什么都没留下…
展开
-
排序----希尔排序
1、希尔排序 算法思想简单描述:在直接插入排序算法中,每次插入一个数,使有序序列只增加1个节点,并且对插入下一个数没有提供任何帮助。如果比较相隔较远距离(称为增量)的数,使得数移动时能跨过多个元素,则进行一次比较就可能消除多个元素交换。D.L.shell于1959年在以他名字命名的排序算法中实现了这一思想。 算法先将要排序的一组数按某个增量d分成若干组,每组中记原创 2012-09-12 14:58:25 · 733 阅读 · 0 评论 -
排序----快速排序
1、快速排序思想:选取基准元素,将数组分成两个子数组,其中一个数组里面的元素都比基准元素大,而另一个数组元素都比基准元素小。然后递归调用快速排序对这两个子数组进行排序。代码://快速排序//输入数组a,数组起始位置start(初始值0),结束位置end(初始值n-1)void QuickSort(int *a,int start,int end){ int i=start,原创 2012-09-07 23:54:56 · 831 阅读 · 0 评论 -
排序----堆排序
1、堆数据结构 堆数据结构:是一种数组对象。它可以视为一个完全二叉树,数中的每个节点和数组的每个元素一一对应。 最大根堆:堆中最大值存放在根节点中。并且以某一节点为根的子树中,各节点的值都不大于该子树根结点的值。2、维护堆的性质 我们假设某一节点A[i],以A[i]的左孩子A[LEFT[i]]和右孩子A[RIGHT[i]]为根的两棵子树都是原创 2012-09-07 23:28:15 · 748 阅读 · 0 评论 -
查找----深入探索散列查找
1、散列函数 把任意长的输入消息串变化成固定长的输出串的一种函数。这个输出串称为该消息的杂凑值。一般用于产生消息摘要,密钥加密等。常见的散列函数构造方法如下: (1)直接定址法 例如:有一个从1到100岁的人口数字统计表,其中,年龄作为关键字,哈希函数取关键字自身。 (2)数字分析法 有学生的生日数据如下: 年.月.日 75.10.03 7原创 2012-08-25 11:19:23 · 925 阅读 · 0 评论 -
查找----二分查找法
1、二分查找法 二分查找法有一个很重要的前提条件:即待查找的序列必须是已经排好序的。 假设元素序列是按升序排列,将序列中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将序列分成前、后两个子序列,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子序列,否则进一步查找后一子序列。重复以上过程,直到找到满足条件的记录,查找成功,返回元素在序原创 2012-08-25 10:59:08 · 3258 阅读 · 0 评论 -
排序----归并排序
1、归并排序 原理:假设初始序列有n个记录,则可以看成是n个有序的子序列,每一个子序列的长度为1,然后两两归并,得到[n/2]个长度为2或者1的有序子序列;再两两归并......,如此重复,知道得到一个长度为n的有序序列为止。2、归并排序递归版本 递归将序列分行n个长度为1的子序列,然后递归将n各子序列排序成一个长度为n的有序序列。代码:#inclu原创 2012-09-12 15:05:12 · 761 阅读 · 0 评论