快排非递归

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]);
}

递归到非递归,栈很重要。和前面的二叉树的后序遍历类似。
自己做了个微信小程序,主要用来记录自己要做的事情,并可以查看历史记录。有兴趣的可以在这里看下相关截图和代码。也可以扫二维码体验一下。


好多知识不知道
21 声望0 粉丝

想法,每个人都有,每时每刻。想法并不会一直留在脑中,时间会遗忘一切,有必要整理一些东西,记住那时的你。思维是最美的东西,让不同时间的你,用思维对话。(起高了)