经典算法之排序和查找
韩某Hyman
Program is zero,but zero is start.
展开
-
时间复杂度、空间复杂度、稳定性
时间复杂度 概念 执行算法所需要的计算工作量。一般来说,计算机算法是问题规模n的函数f(n),算法的时间复杂度也因此记做T(n)=O(f(n))。 计算方式 得出算法的计算次数公式,一般时间复杂度就是计算的次数。比如:下面例子中共计算n次,时间复杂度就是O(n)。原创 2017-03-17 17:19:55 · 372 阅读 · 0 评论 -
快速排序
原理 也叫作分割交换排序法,分治法,是对冒泡排序的一种改进,也是目前公认的最佳排序方法。 通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按照此方法对这两部分数据分步进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。原创 2017-03-19 22:56:44 · 944 阅读 · 0 评论 -
冒泡排序
原理 从前往后依次将相邻的两个数进行比较,小的放前面,大的放后面,重复进行,直到没有再需要交换的数即排序完成。 过程(比如从小到大排序) 比较相邻的两个元素,将小的放前面,大的放后面。 从前往后依次对每一对相邻的元素做同样的操作,这样最后一个元素将会是最大的。 针对无需区间内的所有元素重复以上步骤。 重复步骤的元素依次减少,直到没有要交换的元素,即排序完成。原创 2017-03-17 16:22:39 · 2312 阅读 · 0 评论 -
堆排序和归并排序
堆排序 原理 把待排序的元素按照大小在二叉树位置上排列,排序好的元素要满足:父节点的元素要大于等于子节点;这个过程叫做堆化过程,如果根节点存放的是最大的数,则叫做大根堆,如果是最小的数,则叫做小根堆,可以把根节点拿出来,然后再堆化,循环到最后一个节点。原创 2017-03-18 22:40:05 · 222 阅读 · 0 评论 -
二分查找
原理 又称为折半查找,必须在有序数组中进行查找。可分为递归方法和非递归方法两种。二分查找查询速度最快。 过程 确定数组的中建位置mid=(low/high)/2。 用要查找的数值与中间值比较:若相等,则查找成功;若小于,则继续在左半部分查找;若大于,则继续在右半部分查找。 重复上面步骤直到找到位置,未找到则表明不存在。原创 2017-03-20 15:59:01 · 782 阅读 · 0 评论 -
顺序查找
原理 按一定的顺序检查数组中每个元素,直到找到所要寻找的特定值为止。原创 2017-03-20 00:17:50 · 734 阅读 · 0 评论 -
希尔排序
原理 把元素按下标的一定增量分组,然后对每组进行插入排序;随着增量逐渐减少,每组包含的元素越来越多,当增量减至1时,所有元素成为一组,算法便终止。其实也是插入排序的一种,区别在于插入排序是相邻元素的比较(类似于希尔排序中增量h=1的情形)原创 2017-03-19 19:40:06 · 509 阅读 · 0 评论 -
选择排序
原理 在序列中找到最小的元素,放到序列的起始位置,再从剩余未排序区间中寻找最小元素,放到第二个位置,以此类推,直到所有元素排序完毕。原创 2017-03-19 18:16:01 · 745 阅读 · 0 评论 -
插入排序
原理 将待插入元素与有序表中的元素比较,插入到合适的位置,使有序表依然有序。原创 2017-03-17 19:32:23 · 253 阅读 · 0 评论