1、二分查找(Binary Search) 二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找要求:线性表是有序表,即表中结点按关键字有序,并且表的存储结构为顺序结构。不妨设有序表是递增有序的。2、二分查找的基本思想二分查找算法思想:(1)首先确定该区间的中点位置: mid = ( l.....
分类:
编程语言 时间:
2014-10-18 01:53:51
阅读次数:
376
考虑每次删除pos位置一个数x后,所造成的的影响就是,逆序对的个数少了在1~pos-1中大于x的数的个数加上pos+1~n中小于x的数的个数。那么我们需要的操作就只有查询区间内比某数大(小)的个数。↑,分块经典操作,每个块里维护一个有序表。由于有删除,最好每个块用一个vector。对于原数列怎么办呢...
分类:
其他好文 时间:
2014-10-16 20:36:13
阅读次数:
214
https://oj.leetcode.com/problems/merge-sorted-array/归并排序的一步操作,需要事先把A[]的元素移到数组末端,前段空出来填充结果。需要注意的是如果从0~m的转移会在n比较小的时候有问题。所以要从m~0转移。使用memcpy在GCC下就是从0~m开始转...
分类:
编程语言 时间:
2014-10-15 23:05:41
阅读次数:
202
分块 或 树套树。在每个块中维护一个有序表,查询时各种二分,全都是分块的经典操作,就不详细说了。块的大小定为sqrt(n*log2(n))比较快。 1 #include 2 #include 3 #include 4 #include 5 using namespace std; 6 i...
分类:
其他好文 时间:
2014-10-14 22:49:59
阅读次数:
258
有序表需要掌握的插入方法,删除方法和二分法查找方法。插入方法: 从前往后找到比要插入的值大的数组项,将该数组项及之后的项均后移一位(从最后一项起依次后移),最后将要插入的值插入当前数组项。删除方法: 从前往后找到要删除的项,将该数组项之后的项均前移一位(从该数组项后一项起依次往前移);二分法查找: ...
分类:
编程语言 时间:
2014-10-14 17:13:38
阅读次数:
206
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。折半查找法的两种实现折半查找法思想:在有序表中,把待查找数据值与查找范围的中间元素值进行比较..
分类:
移动开发 时间:
2014-10-14 03:57:08
阅读次数:
185
一、静态查找 顺序的查找 有序表查找 平均查找长度: 特点1、折半查找 log(n+1)-1 ...
分类:
其他好文 时间:
2014-10-06 17:39:40
阅读次数:
233
#include
/* 插入排序
基本思想:将记录插入到已排序好的有序表中
特点:一种稳定的排序方法,时间复杂度O(n^2)
*/
void InsertSort(int array[],int len){
int i,j;
int temp;...
分类:
其他好文 时间:
2014-09-30 23:23:10
阅读次数:
196
区间k大,分块大法好,每个区间内存储一个有序表。二分答案,统计在区间内小于二分到的答案的值的个数,在每个整块内二分、零散的暴力即可。还是说∵有二分操作,∴每个块的大小定为sqrt(n*log2(n))比较快呢。 1 #include 2 #include 3 #include 4 #include ...
分类:
其他好文 时间:
2014-09-29 09:48:57
阅读次数:
229
“归并”的含义是将两个或两个以上的有序表组合成一个新的有序表。
以n个元素的数组为例:可以看作为n个有序的子表,每个子表的长度为1,然后两两合并,得到n/2个长度为2或1的有序子表。然后再两两合并......如此重复,直到合并为一个长度为n的有序表为止。...
分类:
其他好文 时间:
2014-09-25 19:34:57
阅读次数:
119