开篇
排序是我们日常开发中非常常用的一种操作。目前最经典的排序算法有十种,分别是:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序。下面我们介绍两种最常用的排序算法:冒泡排序和快速排序。
冒泡排序
冒泡排序实现思想比较简单,但是性能较差,适合作为培训教学使用。主要实现思想是:遍历数据中每一个节点,如果不合符我们预期的顺序则和下一个数据交换位置,依此类推。
实现代码如下:
1 | //交换数组元素 |
快速排序
快速排序是已知排序算法中最快的之一,适合数据量较大的时候使用。其主要实现思想是:先取一个基数(一般取数据的中间位置),然后对基数两边的数据分别排序,比基数大的放右边,比基数小的放左边。之后,对左右两边的数据进行以上相同的操作,直到左右两边数据为空。
实现代码如下:
1 | //快速排序 |
总结
不难看出:两种算法相对比之下,快速排序的所用的操作更少。下面我们用一个例子来验证下这个结论:
1 | var _arr = [] |
在数据量为10w时,结果输出为冒泡排序用时5373ms,快速排序用时533ms,两者性能相差10倍之多!