常用的查找算法
线性/顺序查找算法
算法流程
- 使用目标元素与样本数列中的元素从前向后依次比较大小;
- 若找到与目标元素相等的元素,则表示查找成功;
- 若所有元素与目标元素比较完毕也没有相等的元素,则表示查找失败;
二分/折半查找算法
算法流程
- 假定样本数列中的所有元素从小到大有序排列;
- 使用目标元素与样本数列中的中间元素比较大小,若相等则查找成功;
- 若目标元素小于中间元素,则应该去中间元素的左边进行查找;
- 若目标元素大于中间元素,则应该去中间元素的右边进行查找;
- 直到处理完毕所有元素也没有相等的元素,则表示查找失败;
常见的排序算法
冒泡排序算法
算法流程
- 比较相邻位置两个元素的大小,若第一个元素比第二个大则交换两个元素的位置;
- 从开始的第一对一直比较到结尾的最后的一对,经过这一步,最后的元素将是这组
元素的最大值; - 重复步骤b持续对越来越少的元素进行比较,直到处理完毕所有元素为止;
(任何相邻位置的两个元素都不再需要交换为止)
插入排序算法
算法流程
- 取出第一个元素,可以认定该元素已经有序;
- 取出下一个元素,让取出的元素与左边的有序数列从右向左依次比较大小;
- 若取出的元素小于左边的元素,则将左边的元素右移也就是赋值到下一个元素的位置;
- 若取出的元素大于等于左边的元素,则将取出的元素插入到左边元素的右边;
- 重复步骤b,直到处理完毕所有元素为止;
选择排序算法
算法流程
- 取出第一个元素并假定该元素是这组元素中的最小值使用min记录下标;
- 使用min记录的最小值与后续元素依次比较大小;
- 若后续元素中出现比min记录的最小值还小的元素,则使用min记录该元素的下标;
- 直到min记录的最小值与后续所有元素比较完毕后,交换min记录的最小值和最开始
假定最小值的元素位置; - 经过这一步,最起始的元素将是这组元素中的最小值,取出下一个元素重复步骤a,
直到处理完毕所有元素为止;
快速排序算法
算法流程
- 选择中间元素作为基准值并单独保存起来;
- 分别使用左右两边的元素依次与基准值比较大小,将所有小于基准值的元素放在左边,
将所有大于等于基准值的元素放在右边,这个过程叫做分组; - 分别对左右两边的分组进行再次分组,使用递归的思想;
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!