基本思想折半插入排序的基本思想与直接插入排序一样,在插入第i(i≥1)个元素时,前面i-1个元素已经排好序。区别在于寻找插入位置的方法不同,折半插入排序是采用折半查找法来寻找插入位置的。
折半查找法的基本思路是:用待插元素的值与当前查找序列的中间元素的值进行比较,以当前查找序列的中间元素为分界,确定待插元素是在当前查找序列的左边还是右边,如果是在其左边,则以该左边序列为当前查找序列,右边也类似。按...
分类:
编程语言 时间:
2015-07-18 08:24:26
阅读次数:
136
此段来自:http://baike.baidu.com/link?url=5BxiVhAiQ3LLeLLs_wYrDjQW55DaksohkqMNm5KJdhkLP5BsxQ_WbyqDuhjnvl90ys9UAfr_mcNY-k6mRKrstq#3_7
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常...
分类:
其他好文 时间:
2015-07-17 18:57:59
阅读次数:
134
三重循环肯定TLE,所以采用“折半枚举”的方法+二分查找来提高速度,不同的是需要保存两个下标用来判定是否有重复元素。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 7 const int N = 1...
分类:
其他好文 时间:
2015-07-17 17:58:13
阅读次数:
94
一、插入排序
插入排序就是将一个待排数据按其大小插入到一个有序表的适当位置,并插入后仍有序。分为三类:直接插入排序;折半
插入排序;希尔插入排序。
【直接插入排序】
例如,把{4,3,1,2}进行排序,算法过程见图:
通常,有序的序表是r[1]、r[2].....,而r[0]是哨兵,用于存放需要排序的数据,属于赋值空间。
所以,算法时间复杂度是:...
分类:
编程语言 时间:
2015-07-15 11:17:18
阅读次数:
146
public class Search { public class BiTreeNode{ int m_nValue; BiTreeNode m_pLeft; BiTreeNode m_pRight; } //顺序查找,查...
分类:
编程语言 时间:
2015-07-14 15:22:56
阅读次数:
130
数据结构中常见的内部排序算法: 插入排序:直接插入排序、折半插入排序、希尔排序 交换排序:冒泡排序、快速排序 选择排序:简单选择排序、堆排序 归并排序、基数排序、计数排序直接插入排序: 思想:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中,直到全部记录插入完成。 性...
分类:
编程语言 时间:
2015-07-14 13:10:31
阅读次数:
211
查找: ? 静态查找(只查找):顺序查找(), 折半查找,分块查找 动态查找(查找失败则插入):二叉排序树、二叉平衡树、 B-、B+ 树 B-、 B+ 树是高效的外存数据结构, 二叉。。树不能的每个节点读取外存时...
分类:
编程语言 时间:
2015-07-13 18:57:05
阅读次数:
136
基本查找算法一、查找的基本概念查找,也可称检索,是在大量的数据元素中找到某个特定的数据元素而进行的工作。查找是一种操作。二、顺序查找针对无序序列的一种最简单的查找方式。时间复杂度为O(n)。三、折半查找针对已排序序列的一种查找方式。并且只适用于顺序存储结构的序列。要求序列中的元素基本不变,在需要做删...
分类:
编程语言 时间:
2015-07-11 18:12:05
阅读次数:
128
黑马程序员--java基础学习笔记6
一、笔记内容概述:
数组-第二种定义格式、数组-常见操作-遍历-最值-选择排序-冒泡排序-排序位置置换代码提取、数组-排序的性能问题、数组-常见功能-查找-折半查找、进制转换-查表法-整合。
二、常用内容介绍:
1.数组初始化的三种方式:
int[] arr = new int[...
分类:
编程语言 时间:
2015-07-08 09:37:57
阅读次数:
150
小刀和大刀是双胞胎兄弟。今天他们玩一个有意思的游戏。 大刀给小刀准备了一个长度为n的整数序列。小刀试着把这个序列分解成两个长度为n/2的子序列。
这两个子序列必须满足以下两个条件:
1.他们不能相互重叠。
2.他们要完全一样。
如果小刀可以分解成功,大刀会给小刀一些糖果。
然而这个问题对于小刀来说太难了。他想请你来帮忙。
Input
第一行...
分类:
其他好文 时间:
2015-07-06 23:35:01
阅读次数:
367