摘要:
二叉查找树(英语:Binary Search Tree),也称为二叉搜索树、有序二叉树(ordered binary tree)或排序二叉树(sorted binary tree),是指一棵空树或者具有下列性质的二叉树: 若任意节点的左子树不空,则左子树上所有节点的key值均小于它的根节点的值; 若 阅读全文
摘要:
斐波那契搜索技术是一种使用分而治之算法搜索已排序数组的方法,该算法借助斐波纳契数来缩小可能的位置。与二元搜索相比,排序数组被分成两个大小相等的部分,其中一个进一步检查,斐波那契搜索将数组分成两个部分,其大小为连续的斐波纳契数。平均而言,这导致执行的比较增加了大约4%,但它的优点是只需要加法和减法来计 阅读全文
摘要:
插值搜索法(Interpolation search)是利用插值公式来计算猜测搜索键值的位置。搜索方式与二分搜索相同 插值公式: 插值 = (设算数 - 最小数) / (最大数 - 最小数) 搜索键值 = left + parseInt( ( key - data[ left ] ) / ( d 阅读全文
摘要:
二分搜索(英语:binary search),也称折半搜索(英语:half-interval search)、对数搜索(英语:logarithmic search),是一种在有序数组中查找某一特定元素的搜索算法。 搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一 阅读全文
摘要:
线性搜索或顺序搜索是一种寻找某一特定值的搜索算法,指按一定的顺序检查数组中每一个元素,直到找到所要寻找的特定值为止。是最简单的一种搜索算法。 假设一个数组中有n个元素,最好的情况就是要寻找的特定值就是数组里的第一个元素,这样仅需要1次比较就可以。而最坏的情况是要寻找的特定值不在这个数组或者是数组里的 阅读全文
摘要:
堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:子节点的键值总是小于(或者大于)它的父节点。 堆是通过一维数组来实现的。在数组起始位置为0(根节点)的情形中: 父节点i的左子节点在位置(2i+1) 父节点i的右子节点在位 阅读全文
摘要:
希尔排序,也称递减增量排序算法,是插入排序的一种更高效的改进版本。希尔排序是非稳定排序算法。 希尔排序是基于插入排序的以下两点性质而提出改进方法的: 插入排序在对几乎已经排好序的数据操作时,效率高,即可以达到线性排序的效率 但插入排序一般来说是低效的,因为插入排序每次只能将数据移动一位 步长的选择是 阅读全文
摘要:
插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素 阅读全文
摘要:
归并排序(英语:Merge sort,或mergesort),是创建在归并操作上的一种有效的排序算法,效率为 O(n·log n)。和快速排序一样,该算法是采用分而治之(Divide and Conquer)的思想,也是一个非常典型的应用,且各层分治递归可以同时进行。 采用分治法: 分割:递归地把当 阅读全文
摘要:
快速排序(英语:Quicksort),又称划分交换排序(partition-exchange sort),简称快排,一种排序算法,使用了分治思想来进行数组排序,数组划分为两个子数组A[p, ..., q-1]和A[q+1, ..., r],A[p, ..., q-1]中的每一个元素都小于A[q],A 阅读全文