目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
排序算法(英语:Sorting algorithm)是一种能将一串资料依照特定排序方式进行排列的一种算法。
最常用到的排序方式是数值顺序以及字典顺序。
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。 所以在面试中经常会问到排序算法及其相关的问题。
冒泡排序
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素, 如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有元素再需要交换, 也就是说该数列已经排序完成。
冒泡排序演算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
快速排序
算法思想: 快速排序是选择出一个标准A,然后将小于A的值放在A之前,大于A的值放在A之后.
算法实现:
- 选择数组中第一个元素作为标准A,从后面开始比较
- 如果找到一个小于A的值B,就将B放在A的位置,然后从B之后开始找
- 如果找到一个大于A的值C,就将C放在最开始B的位置上,
- 依照上面的次序进行,直到从前面开始找的和从后面找的相遇,就将A放在相遇的位置.
归并排序
归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。
算法实现:
- 把长度为 n 的输入序列分成两个长度为 n/2 的子序列;
- 对这两个子序列分别采用归并排序;
- 将两个排序好的子序列合并成一个最终的排序序列。
原生js中有自带的排序的函数sort(),angularjs中排序的方法是自带的过滤器orderby
语法: return[()[expression][]]; 可选项 expression 参数是要从函数返回的值。如果省略,则该函数不返回值。 用 return 语句来终止一个函数的执行,并返回 expression 的值。如果 expression
被省略, 或在函数内没有 return 语句被执行,则把值 undefined 赋给调用当前函数的表达式。