美文网首页
面试准备-排序

面试准备-排序

作者: NJUJiachen | 来源:发表于2017-03-01 21:19 被阅读0次

面试准备-排序

插入排序

最简单的排序算法,由N-1趟排序组成,根据已知事实:0~p-1的元素已经按序排列(p当前第几趟)

E.G.原始数组34/8/64/51/32/21

a.(34)插入8得(8/34)

b.(8/34)插入64得(8/34/64)...

算法复杂度O(N二次方)-插入n-1次,每次插入都会导致数组移动

希尔排序,别称缩减增量排序

增量序列:h1, h2, h3 (如1, 3, 5)

a. 5排序:把间隔5的元素排序

X 1 X X X X 3 X X X X 2 X X X X 调整为 X 1 X X X X 2 X X X X 3 X X X X

b. 进行3排序和1排序

算法复杂度最坏情况O(N二次方)

堆排序,基于优先队列思想,一种树形选择排序

a.先构造最大堆(反之最小堆亦然),首先产生完全二叉树,从最后一个非叶节点主机调整产生最大堆

每次调整都是从父节点、左孩子节点、右孩子节点三者中选择最大者跟父节点进行交换(交换之后可能造成被交换的孩子节点不满足堆的性质,因此每次交换之后要重新对被交换的孩子节点进行调整)

b.再不断deleteMax ,拿掉堆顶,逐级调整

c.直至仅剩最后一个元素

算法复杂度O(NlogN)

选择排序,每次选择一个当前最小值

将初始序列(A[0]~A[n-1])作为待排序序列,第一趟在待排序序列(A[0]~A[n-1])中找到最小值元素,将其与第一个元素A[0]交换,这样子序列(A[0])已经有序,下一趟在排序在待排序子序列(A[1]~A[n-1])中进行。第i趟排序在待排序子序列(A[i-1]~A[n-1])中找到最小值元素,与该子序列中第一个元素A[i-1]交换。经过 n-1 趟排序后使得初始序列有序。

冒泡排序

第一趟在序列(A[0]~A[n-1])中从前往后进行两个相邻元素的比较,若后者小,则交换,比较 n-1 次;第一趟排序结束,最大元素被交换到A[n-1]中下一趟排序只需要在子序列(A[0]~A[n-2])中进行;冒泡排序最多进行 n-1 趟。

基本的冒泡排序可以利用旗标的方式稍微减少一些比较的时间,当寻访完序列后都没有发生任何的交换动作,表示排序已经完成,而无需再进行之后的比较与交换动作。

快速排序

算法复杂度O(NlogN)-平均运行时间,O(N二次方)-最坏的情况

通过一趟排序将要排序的数据分割成独立的两部分(枢纽元),其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行

如何选取枢纽元

错误:选择第一个元素

安全:随机选取

三数中值分割法:使用左端,右端,中心位置的三个元素的中值作为枢纽元

分割策略

1. 将枢纽元和最后的元素交换使得枢纽元离开被分割的数据段

相关文章

  • 面试准备-排序

    面试准备-排序 插入排序最简单的排序算法,由N-1趟排序组成,根据已知事实:0~p-1的元素已经按序排列(p当前第...

  • 面试准备--排序

    堆排序 快速排序(simple) 快速排序(regular) 归并排序 Shell排序 插入排序 选择排序 冒泡排序

  • 【面试准备】冒泡排序

    基本思想 两个数比较大小,大数上浮,小数下沉!因为跟水开了的时候那个状态相似,所以简称冒泡!简单来说就是这样:比如...

  • PHP常见排序算法学习

    题记: 常见的排序算法有:冒泡排序法,快速排序法,选择排序法,插入排序法,此处作为自己最近面试准备进行的学习笔记,...

  • ios各种排序算法

    最近把面试需要准备的基础算法总结一下,包括冒泡排序,选择排序,快速排序,插入排序。 冒泡排序(从小到大排):始终从...

  • 面试算法知识梳理(12) - 二叉树算法第二部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 ...

  • 面试算法知识梳理(13) - 二叉树算法第三部分

    面试算法代码知识梳理系列 面试算法知识梳理(1) - 排序算法 插入排序 希尔排序 选择排序 冒泡排序 计数排序 ...

  • 让面试官满意的排序算法(图文解析)

    让面试官满意的排序算法(图文解析) 这种排序算法能够让面试官面露微笑 这种排序算法集各排序算法之大成 这种排序算法...

  • 排序学习 - 为了面对算法面试(2)

    排序学习 - 为了面对算法面试(1) - 选择排序/冒泡排序/插入排序 4.归并排序:归并排序(MERGE-SOR...

  • 堆排序算法

    啊噢,又开始写算法学习的笔记了。最近在准备面试的过程中又把这些常见的排序算法拿出来复习复习,既然这篇写到了堆排序,...

网友评论

      本文标题:面试准备-排序

      本文链接:https://www.haomeiwen.com/subject/rvycgttx.html