二分查找二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成...
分类:
其他好文 时间:
2015-01-19 12:29:14
阅读次数:
133
归并排序是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 归并过程为:比较a[i]和a[...
分类:
编程语言 时间:
2015-01-18 00:50:00
阅读次数:
257
直接插入排序:每次从无序表中取出第一个元素,把它插入到有序表的合适位置,使有序表仍然有序。第一趟比较前两个数,然后把第二个数按大小插入到有序表中; 第二趟把第三个数据与前两个数从前向后扫描,把第三个数按大小插入到有序表中;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。直接插入排序属于...
分类:
编程语言 时间:
2015-01-16 15:58:12
阅读次数:
173
思想:将两个(或以上)的有序表组成新的有序表。说明:(1)更实际的意义:可以把一个长度为n 的无序序列看成是 n 个长度为 1 的有序子序列 ,首先做两两归并,得到 én / 2ù 个长度为 2 的子序列 ;再做两两归并,…,如此重复,直到最后得到一个长度为 n 的有序序列。(2)性能分析。空间性能...
分类:
编程语言 时间:
2015-01-15 12:21:34
阅读次数:
259
UVA 10780
Problem
给两个整数M,N,要求找到最小的正整数K,使得(M^k)可整除(N ! )。输出K,若不存在,输出不存在。
Limits
Time Limit(ms): 3000
Memory Limit(MB): No Limit
M: [2, 5000]
N: [1, 10000]
不超过500个case
Solution
分解素...
分类:
其他好文 时间:
2015-01-14 22:58:44
阅读次数:
166
关于排序算法的性能和稳定性总结,维基百科中文词条排序算法的总结很全面。本文统一将数组从小到大排序。1.插入排序(1)直接插入排序,基本操作是将一个记录插入到已经排好序的的有序表中,从而得到一个新的,记录数曾1的有序表。void InsertSort(int a [], int size){ int....
分类:
编程语言 时间:
2015-01-14 19:38:01
阅读次数:
173
这篇小日志,简单哦整理了下直接插入排序,参考过八大排序算法和度娘的直接插入排序。其中八大排序算法整理的比较好,这里Copy部分讲解作为自己记录。将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。源码方面开始参考的两篇文章,但在尽量精简代码上发现还可以在原有代码上进行优化,自己整...
分类:
编程语言 时间:
2015-01-13 17:36:39
阅读次数:
171
静态查找表顺序查找有序查找折半查找(binary search)判定树 折半查找只适用于有序表,且限于顺序存储结构(对线性链表无法有效的进行折半查找)斐波那契查找:根据斐波那契序列的特点进行分割,假设开始时表中记录个数比某个斐波那契数小1即n=fu-1,然后将给定值key和 [fu -1 ].key...
分类:
其他好文 时间:
2015-01-13 07:50:39
阅读次数:
243
#include /* 插入排序基本思想:将记录插入到已排序好的有序表中特点:一种稳定的排序方法,时间复杂度O(n^2)*/void InsertSort(int array[],int len){ int i,j; int temp; for (i =1; i =0; j--) {// j...
分类:
编程语言 时间:
2015-01-11 19:03:47
阅读次数:
176
归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已有序...
分类:
编程语言 时间:
2015-01-04 22:48:45
阅读次数:
264