快排非递归
function quickSort(arr){
var start = 0 ;
var end = arr.length -1;
if(start>=end) return;
var partitionQueue = [];
partitionQueue.push(end);
partitionQueue.push(start);
while(partitionQueue.length>0){
var start = partitionQueue.pop();
var end = partitionQueue.pop();
var index = partition(arr,start,end);
if(index+1<end){
partitionQueue.push(end);
partitionQueue.push(index+1);
}
if(index-1>start){
partitionQueue.push(index-1);
partitionQueue.push(start);
}
}
}
function partition(arr,start, end){
var standardVal = arr[start];
while(start<end){
while(standardVal<=arr[end]&&start<end){
end--;
}
arr[start] = arr[end];
while(standardVal>arr[start]&&start<end){
start++;
}
arr[end] = arr[start];
}
arr[start] = standardVal;
return start;
}
var arr = [1,2,34,12,11,10,9,8,22,23];
quickSort(arr);
for(var i = 0 ; i < arr.length ; i ++){
console.log(arr[i]);
}
递归到非递归,栈很重要。和前面的二叉树的后序遍历类似。
自己做了个微信小程序,主要用来记录自己要做的事情,并可以查看历史记录。有兴趣的可以在这里看下相关截图和代码。也可以扫二维码体验一下。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。