常用算法

代码实现:https://gitee.com/sgrslim/DataStructure.git

冒泡排序:

相邻数据元素比较,进行交换。     O(n^2)

选择排序:

原理:

  1. 每一次遍历的过程,都假定第一个索引处的元素是最小值,和其他索引处的值依次进行比较,如果当前索引值大于其他某处索引处值,则假定其他某个索引处的值为最小值,最后找出最小值所在的索引
  2. 交换第一个索引处和最小值索引处位置

      O(n^2)

插入排序

原理:

  1. 将所有元素分为两组,已排序 和 未排序。
  2. 找到未排序组中的第一个元素,向已排序组中进行插入。
  3. 倒叙遍历已排序元素,依次和待插入元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置,其他元素向后移动一位。

希尔排序

原理

  1. 选定一个增长量h(一般为取数组长度的二分之一),按照增长量h作为数据分组的依据,对数据进行分组
  2. 对分好组的每一组数据完成插入排序
  3. 减小增长量,最小减为1,重复第二步操作

推演:希尔排序 是 插入排序的 优化。旨在减少 比较次数和交互次数。以增量h将数组分成多个小组,每个小组进行排序。最终h=1时,其实就是插入排序,但是因为进行过多次小组排序后,有一定的排序基础,所以效率很高。

原文地址:https://www.cnblogs.com/sgrslimJ/p/13046924.html