最近看见一个要求仅使用加法减法实现二分查找的题目,百度了一下,原来要用到一个叫做斐波那契查找的的算法。查百度,是这样说的:斐波那契查找与折半查找很相似,他是根据斐波那契序列的特点对有序表进行分割的。他要求开始表中记录的个数为某个斐波那契数小1,即n=F(k)-1;开始将k值与第F(k-1)位置的记录...
分类:
其他好文 时间:
2015-09-25 23:06:11
阅读次数:
352
总结下学过的排序算法,方便以后用到。1.插入排序——将一个记录插入到已排序好的有序表中,从而得到一个新,记录数增1的有序表。void insertSort(int a[],int len){ for(int i = 1;i 0 && x 0;i --) for(int...
分类:
编程语言 时间:
2015-09-21 06:57:39
阅读次数:
197
二分查找(BinarySearch)又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如..
分类:
编程语言 时间:
2015-09-19 06:21:13
阅读次数:
170
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。 将已....
分类:
编程语言 时间:
2015-09-15 16:20:20
阅读次数:
202
本组项目针对《数据结构基础系列(2):线性表》课程第8-15节
8. 线性表的链式存储
9. 建立单链表
10. 单链表基本操作的实现
11. 单链表应用举例
12. 双链表
13. 循环链表
14. 线性表的应用
15. 有序表 【项目1 - 建立单链表】
定义单链表存储结构,用头插法和尾插法建立单链表,并显示建立好以后的结果。
请在下面代码的基础上开展工作:...
分类:
其他好文 时间:
2015-09-12 12:17:43
阅读次数:
477
本文针对数据结构基础系列网络课程(2):线性表中第15课时有序表。问题:有两个有序表LA和LB,将它们合并成一个有序表LC。要求不破坏原有表LA和LB
算法思想:
解法1:用有序顺序表实现(支持的算法库,及list.h文件,请点击链接…)#include "list.h"
void UnionList(SqList *LA,SqList *LB,SqList *&LC)
{
int i=...
分类:
其他好文 时间:
2015-09-12 09:39:54
阅读次数:
275
1.顺序查找:从表的一端开始,顺序扫描线性表,依次将扫描到的节点关键字和给定值k相比较。等概率条件下...平均查找长度:ASL = (n+....+2+1)/n= (n+1)/2;2.二分法查找:前提是线性表是有序表。假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于...
分类:
其他好文 时间:
2015-09-11 20:34:51
阅读次数:
166
从包含k个整数的k个数组中各选一个求和,在所有的和中选最小的k个值。思路是多路归并,对于两个长度为k的有序表按一定顺序选两个数字组成和,(B表已经有序)会形成n个有序表A1+B1比较,而现在需要同时合并n个有序表,优先队列(堆)就派上用场了。类似归并排序用i和j维护有序表当前考虑元素,合并的时候,每...
分类:
其他好文 时间:
2015-09-08 00:16:22
阅读次数:
128
1 插入排序直接插入排序:将一个记录插入到已排序的有序表中,得到一个新的有序表,记录数增1。希尔排序:先将待排序的记录序列分成若干个子序列分别进行直接插入排序,待整个序列中的记录基本有序时,在对全体记录进行一次直接插入排序。2 交换排序冒泡排序:每一次冒泡都会使当前的最大记录被安置在最后一个记录的位...
分类:
编程语言 时间:
2015-09-07 16:43:38
阅读次数:
394
一、插入排序 –直接插入排序:将一个记录插入到已经排好序的有虚表中,从而得到一个新的、记录数增1的有序表。 –二分插入排序 –希尔排序 ①直接插入排序(从后向前找到合适位置后插入) 1、基本思想:每...
分类:
编程语言 时间:
2015-09-05 12:35:08
阅读次数:
279