javascript语言
初始状态,设置基准值,将数组中的第一个值作为基准值,即数字6。
第一次循环,j找到小于6的值后,停止寻找,i找到大于6的值后,停止寻找。
将两者数值交换。
第二次循环,j找到小于6的值后,停止寻找,i找到大于6的值后,停止寻找。
两者数值交换。
第三次循环,j找到小于6的值后,停止寻找,i找到大于6的值后,停止寻找。
当j找到小于6的值后,停止寻找,i开始循环,寻找大于6的值,当i=j时,结束循环。将i的值与基准值交换。
此时,在基准值6的左侧均为小于6的值,右侧为大于6的值。再使用递归算法,将左右两边数组进行排序。
代码段(使用js语言)。function quickSort(num,from,to){ var from = from != undefined ? from : 0; //开始位置 var to = to != undefined ? to : num.length-1; //结束位置 var i = from; var j = to; var key = num[from]; //基准值 var temp; // 临时变量,用于数字交换 if(i>=j){ return num; //递归出口 } while(i
注意点:1、to = to != undefined ? to : num.length-1; 函数开始时需要有一个判断值是否为undefined的语句,不能直接写 to = to ? to: num.length-1,因为在函数执行的过程中,到递归语句时,可能会传入0,如果传入0,会将to赋值为num.length-1,导致函数运行不正确。2、while(i
如果觉的此经验比较有用,请点击'投票”和“有得”,不胜感激! 如果经验有欠缺,请评论指出,谢谢!