罕见排序
javaScript完成的罕见排序算法有:冒泡排序,挑选排序,插入排序,谢尔排序,疾速排序(递归),疾速排序(客栈),合并排序,堆排序
历程
“疾速排序“的头脑很简单,全部排序历程只需要三步:
(1)在数据集当中,找一个基准点
(2)竖立两个数组,离别存储左侧和右侧的数组
(3)应用递归举行下次比较
看一个demo:http://jsdo.it/norahiko/oxIy/fullscreen(网页翻开能够较慢,逐步守候吧)
代码例子
<script type="text/javascript">
function quickSort(arr){
if(arr.length<=1){
return arr;//假如数组只要一个数,就直接返回;
}
var num = Math.floor(arr.length/2);//找到中间数的索引值,假如是浮点数,则向下取整
var numValue = arr.splice(num,1);//找到中间数的值
var left = [];
var right = [];
for(var i=0;i<arr.length;i++){
if(arr[i]<numValue){
left.push(arr[i]);//基准点的左侧的数传到左侧数组
}
else{
right.push(arr[i]);//基准点的右侧的数传到右侧数组
}
}
return quickSort(left).concat(numValue,quickSort(right));//递归不停反复比较
}
alert(quickSort([32,45,37,16,2,87]));//弹出“2,16,32,37,45,87”
</script>
申明:arr.splice(num,1)
;用于找到中间数的值,返回的是一个数组,假如运用arr[num]
则返回的是一个数值