几种常见的排序算法

昨天刷面经的时候发现这些基本的算法是面试中常见的问题,吓得我赶紧复习了一下。

1.冒泡排序

原理:从序列尾至头,依次比较两相邻的元素,小的元素左移(前移)大的元素右移(后移)经过 n-1 次起泡后,序列有序。

代码:

几种常见的排序算法

2.插入排序

原理:将序列第一个元素视为有序列,其余数视为无序列。从第 2 个数开始,逐个从无序列中取出插入到有序子列中...直至得到完全有序列。

代码:

几种常见的排序算法

 

3.快速排序

原理:以序列中某个元素 PK(通常是 r[0])为分界,将序列划分为两个子序列,左边的子序列都不大于 PK,右边的子序列都不小于 PK。然后对左、右子序列同时进行类似分割操作,直至子序列长度为止,序列有序。

代码:

几种常见的排序算法

4.合并排序

原理:首先将序列的每个元素看成是长度为 1 的有序子序列。然后将这些有序自序列两两合并成长度是的有序子序列,然后再两两合并...直至合并成长度是的有序序列。

代码:

 几种常见的排序算法

几种常见的排序算法

5.选择排序 

原理:每次从右至左扫描序列,记下最小值的位置。

代码:

几种常见的排序算法

各种算法的复杂度:

几种常见的排序算法

内容有所借鉴,只是为了方便自己复习,巩固知识。