随笔分类 -  算法

摘要:1、基本概念 (1)查找表 查找表(Search Table)是由同一类型的数据元素(或记录)构成的集合。 (2)查找 查找(Searching)的定义是:给定一个值K,在含有n个结点的表中找出关键字等于给定值K的结点。若找到,则查找成功,返回该结点的信息或该结点在表中的位置;否则查找失败,返回相关 阅读全文
posted @ 2016-05-24 17:26 程序员姜戈 阅读(264) 评论(0) 推荐(0)
摘要:1、定义 顺序查找又叫线性查找,是最基本的查找技术。 2、基本思想 从表的一端开始(第一个或最后一个记录),顺序扫描线性表,依次将扫描到的结点关键宇和给定值K相比较。若当前扫描到的结点关键字与K相等,则查找成功;若扫描结束后,仍未找到关键字等于K的结点,则查找失败。 3、存储结构 顺序查找方法既适用 阅读全文
posted @ 2016-05-24 17:25 程序员姜戈 阅读(7067) 评论(0) 推荐(0)
摘要:1、定义 二分查找又称折半查找,它是一种效率较高的查找方法。 二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的。 2、基本思想 二分查找的基本思想是: 设R[low..high]是当前的查找区间 (1)首先确定该区间的中点位置: (2)然后 阅读全文
posted @ 2016-05-24 17:23 程序员姜戈 阅读(64873) 评论(1) 推荐(1)
摘要:1、定义 分块查找(Blocking Search)又称索引顺序查找。它是一种性能介于顺序查找和二分查找之间的查找方法。 2、基本思想 分块查找的基本思想是: (1)首先查找索引表 索引表是有序表,可采用二分查找或顺序查找,以确定待查的结点在哪一块。 (2)然后在已确定的块中进行顺序查找 由于块内无 阅读全文
posted @ 2016-05-24 17:20 程序员姜戈 阅读(2910) 评论(0) 推荐(1)
摘要:1、定义 二叉排序树(Binary Sort Tree)又称二叉查找(搜索)树(Binary Search Tree)。其定义为:二叉排序树或者是空树,或者是满足如下性质的二叉树: ① 若它的左子树非空,则左子树上所有结点的值均小于根结点的值; ② 若它的右子树非空,则右子树上所有结点的值均大于根结 阅读全文
posted @ 2016-05-24 17:17 程序员姜戈 阅读(3569) 评论(1) 推荐(0)
摘要:1、定义 排序 所谓排序,就是要整理文件中的记录,使之按关键字递增(或递减)次序排列起来。其确切定义如下: 输入:n个记录R1,R2,…,Rn,其相应的关键字分别为K1,K2,…,Kn。 输出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin,或Ki1≥Ki2≥…≥Kin。 记录 被排序的 阅读全文
posted @ 2016-05-24 17:15 程序员姜戈 阅读(1475) 评论(0) 推荐(0)
摘要:1、定义 冒泡排序(Bubble Sort)是一种交换排序。 应用交换排序基本思想的主要排序方法有:冒泡排序和快速排序。 2、基本思想 两两比较待排序记录的关键字,发现两个记录的次序相反时即进行交换,直到没有反序的记录为止。 将被排序的记录数组R[1..n]垂直排列,每个记录R[i]看作是重量为R[ 阅读全文
posted @ 2016-05-24 17:11 程序员姜戈 阅读(2845) 评论(0) 推荐(0)
摘要:1、基本思想 快速排序是C.R.A.Hoare于1962年提出的一种划分交换排序。它采用了一种分治的策略,通常称其为分治法(Divide-and-ConquerMethod)。 (1) 分治法的基本思想 分治法的基本思想是:将原问题分解为若干个规模更小但结构与原问题相似的子问题。递归地解这些子问题, 阅读全文
posted @ 2016-05-24 17:09 程序员姜戈 阅读(479) 评论(0) 推荐(0)
摘要:1、定义 直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。 插入排序(Insertion Sort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子文件中的适当位置,直到 阅读全文
posted @ 2016-05-24 17:07 程序员姜戈 阅读(499) 评论(0) 推荐(0)
摘要:1、定义 希尔排序(Shell Sort)是插入排序的一种。因D.L.Shell于1959年提出而得名。 2、基本思想 先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插人排序;然后,取第二个增量d2<d1重复上述的分 阅读全文
posted @ 2016-05-24 17:06 程序员姜戈 阅读(304) 评论(0) 推荐(0)
摘要:1、定义 选择排序(Selection Sort)的基本思想是:每一趟从待排序的记录中选出关键字最小的记录,顺序放在已排好序的子文件的最后,直到全部记录排序完毕。 常用的选择排序方法有直接选择排序和堆排序。 2、基本思想 n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果: ① 初始 阅读全文
posted @ 2016-05-24 17:04 程序员姜戈 阅读(385) 评论(0) 推荐(0)
摘要:1、基本思想 排序过程无须比较关键字,而是通过"分配"和"收集"过程来实现排序.它们的时间复杂度可达到线性阶:O(n)。 箱排序也称桶排序(Bucket Sort),其基本思想是:设置若干个箱子,依次扫描待排序的记录R[0],R[1],…,R[n-1],把关键字等于k的记录全都装入到第k个箱子里(分 阅读全文
posted @ 2016-05-24 17:03 程序员姜戈 阅读(1377) 评论(0) 推荐(0)
摘要:1、定义 箱排序的变种。为了区别于上述的箱排序,姑且称它为桶排序(实际上箱排序和桶排序是同义词)。 2、基本思想 桶排序的思想是把[0,1)划分为n个大小相同的子区间,每一子区间是一个桶。然后将n个记录分配到各个桶中。因为关键字序列是均匀分布在[0,1)上的,所以一般不会有很多个记录落入同一个桶中。 阅读全文
posted @ 2016-05-24 17:02 程序员姜戈 阅读(235) 评论(0) 推荐(0)
摘要:1、定义 归并排序(Merge Sort)是利用"归并"技术来进行排序。归并是指将若干个已排序的子文件合并成一个有序的文件。 2、两路归并算法 (1)、算法基本思路 设两个有序的子文件(相当于输入堆)放在同一向量中相邻的位置上:R[low..m],R[m+1..high],先将它们合并到一个局部的暂 阅读全文
posted @ 2016-05-24 17:01 程序员姜戈 阅读(748) 评论(0) 推荐(0)
摘要:1、分类 按平均时间将排序分为四类: a、平方阶(O(n2))排序 一般称为简单排序,例如直接插入、直接选择和冒泡排序; b、线性对数阶(O(nlgn))排序 如快速、堆和归并排序; c、O(n1+£)阶排序 £是介于0和1之间的常数,即0<£<1,如希尔排序; d、线性阶(O(n))排序 如桶、箱 阅读全文
posted @ 2016-05-24 16:59 程序员姜戈 阅读(333) 评论(0) 推荐(0)