前言
- 依据不同的原则,排序可以分为五类
- 插入排序
 - 交换排序
 - 选择排序
 - 归并排序
 - 基数排序
 
 - 排序通常有两种基本操作:
- 比较两个关键字的大小;(必要的)
 - 将记录从一个位置记录转移到另一个位置;
 
 - 交换排序
- 冒泡排序
 - 快速排序(快排)
 
 
冒泡排序(bubble sort)
- 冒泡排序的基本思想:有N个数,比较相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一趟就可以选出一个最大的数放在最后面;那么经过N-1轮,就完成了所有数的排序。
 - 伪代码
 
- JavaScript实现
 
  | 
  | 
快排(quick sort)
- 快排是对冒泡排序的一种改进,其基本思想是:对N个数进行一趟排序能达到将数据分割成两部分,一部分的所有数据都比另一部分的所有数据都要小。然后再按此方法,对这两部分数据进行相同的处理,直到完成排序。
 - 快速排序算法非常适用于大型数据集合;在处理小数据集时性能反而会下降。快速排序是处理大数据集最快的排序算法之一。它是一种分而治之的算法,通过递归的方 式将数据依次分解为包含较小元素和较大元素的不同子序列。
 - 代码一(实现普遍、易懂,Java版本也是这样实现)
 
  | 
  | 
- 代码二(实现更加简洁)
 
Array.prototype.sort
- JavaScript原生数组对象的sort,是优化过的快排算法。
 - 不过,此方法需要接收一个比较函数为参数。
 - 代码
 
  | 
  |