基础o(n^2)算法

排序

1.直接插入排序

其复杂度 为 o(n^2)

第一个n是其遍历 第二次是在第一次的遍历的基础上,每次拿第一次遍历的元素和前面排序好元素对比,然后插入。

2.希尔排序

其复杂度 为 o(n^2)

使用gap 进行对换, 每次对换玩都 将gap折半。

3.简单选择排序

是在于 选择这个动作

选择最小元素 (n) n次选择最小元素,所以是复杂度是 o(n^2),替换最前面的元素.

4.堆排序

堆的本质是一个二叉树,一个特殊的二叉树,分为大顶堆和小顶堆。表现出相反的特质。

小顶堆,是所有的元素节点关键值都小于其左右节点的元素的关键值。

大顶推,是所有的元素节点关键值都大于其左右节点的元素的关键值。

如何使用堆进行排序?

从小到大使用小顶推。

1.取出小顶推根元素,作为排序后的第一个元素。并将最后一个元素替换到根元素。

2.重新调整顺序,达到满足小顶堆的性质。

3.重复  1-2  知道全部元素完成。

优点:事件复杂度主要消耗在 遍历取出 + 小堆调整上。

缺点:建立的过程比较复杂。

5.冒泡排序

十分简单的排序,直接左右对比,大的往后交换,直到最后一个元素。

1.n次去遍历

2.每次遍历左右对比,交换,大的靠后。

所以是典型的  o(n^2)算法

6.快速排序

使用基准值+分组

1.组里面找个基准值,小左,大右。

2.拆分成组。

3.重复 1-2.

你可能感兴趣的:(基础o(n^2)算法)