算法复杂度为while循环的个数 缺点是待查表为有序表 也可以用递归的 望多多指教 ...
分类:
其他好文 时间:
2017-01-24 23:54:59
阅读次数:
386
首先思考一个朴素的做法 将b[]维护成一个线段树套有序表,每次修改a[]用线段树+lazy tag 并在线段树的子区间上在有序表中二分更新这段区间中a[i]>=b[i]的值,复杂度O(nlog^2) 有没有更优的做法? 考虑在一次修改操作中,查询的数是相同的,并且b[]这个有序表始终不变 因此在生成 ...
分类:
其他好文 时间:
2017-01-23 22:37:25
阅读次数:
270
二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两 ...
分类:
编程语言 时间:
2017-01-13 01:06:31
阅读次数:
229
直接插入排序是将一个记录插入到已经排好序的有序表中,从而得到一个新的记录数加1的有序表。 下面的代码中会先假设数组的第一个元素是已经拍好序的有序表,然后从第二个元素开始遍历剩下的元素。 所以呢,第一个for循环是遍历待插入的元素,第二个for循环是遍历被插入的有序表,并将待插入元素与有序表的元素比较 ...
分类:
编程语言 时间:
2017-01-05 00:52:57
阅读次数:
179
基本思想: 折半插入算法是对直接插入排序算法的改进,排序原理同直接插入算法: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素;排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程。 与直接插入算 ...
分类:
编程语言 时间:
2017-01-03 13:16:24
阅读次数:
252
直接插入排序算法 基本思想: 把n个待排序的元素看成一个有序表和一个无序表,开始时有序表中只有一个元素,无序表中有n-1个元素;排序过程即每次从无序表中取出第一个元素,将它插入到有序表中,使之成为新的有序表,重复n-1次完成整个排序过程。 实例: 0.初始状态 3,1,5,7,2,4,9,6(共8个 ...
分类:
编程语言 时间:
2017-01-03 12:02:09
阅读次数:
217
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序 ...
分类:
编程语言 时间:
2016-12-05 14:33:13
阅读次数:
172
【问题描述】 针对以非递增有序表表示的静态查找表,编写递归的折半查找算法。 【输入形式】该静态查找表从下标1开始存放数据,存放数据按照非递增顺序,具体输入形式如下: 5 //输入元素个数 33 29 25 20 12 //按照非递增顺序连续输入多个数,每个数之间用一个空格隔开 29 //输入需要查找 ...
分类:
其他好文 时间:
2016-12-04 17:27:22
阅读次数:
182
using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Sort{ ...
分类:
编程语言 时间:
2016-11-19 10:12:39
阅读次数:
187
直接插入算法是将N个带排序的元素看做成一个有序表和一个无序表。 每次从无序表中取一个元素和有序表比较,重复N-1次完成排序。 直接上代码: ...
分类:
编程语言 时间:
2016-11-15 14:33:48
阅读次数:
166