基础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.
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一些概念 数据结构就是研究数据的逻辑结构和物理结构以及它们之间相互关系,并对这种结构定义相应的运算,而且确保经过这...
    Winterfell_Z阅读 6,061评论 0 13
  • 排序算法基础 排序算法,是一种能将一串数据按照特定的排序方式进行排列的一种算法,一个排序算法的好坏,主要从时间复杂...
    jackyshan阅读 4,045评论 3 11
  • 排序算法几种分类方式: 1,稳定排序和不稳定排序 如果a==b, 当排序之前a在b的前面,排序后,a仍然在b...
    fly_ever阅读 447评论 0 0
  • 最幸福的就是我啦,感赏对于一个乡俗规矩不懂的我,每次要做什么事情都有人耐心的教导我,只要照做就好了。 最幸福的就是...
    张嘉芮同阅读 145评论 0 0
  • 最近遇到了一个需要将一串字符串分段以不同的字体、颜色、大小显示到View中的问题,本来很简单,我们在布局多开几个T...
    blink_dagger阅读 6,754评论 7 20