js快速排序

来源:互联网 发布:网络优化论文3000字 编辑:程序博客网 时间:2024/05/23 11:55
var exChange=function(a,i,k){
var temp=a[i];
a[i]=a[k];
a[k]=temp;
}
var partition=function(a,m,n){
var pivot = a[m];                    // 选择第一个元素作为基准
    var tail = m;                     // tail为小于基准的子数组最后一个元素的索引
    for (var i = m+1; i <=n; i++)       // 遍历基准以外的其他元素
    {
        if (a[i] <= pivot)                   // 把小于等于基准的元素放到前一个子数组中
        {
            tail++;
            exChange(a, tail, i);
        }
    }
    exChange(a, m, tail);            // 最后把基准放到前一个子数组的后边,剩下的子数组既是大于基准的子数组
              // 该操作很有可能把后面元素的稳定性打乱,所以快速排序是不稳定的排序算法
    return tail ;   
}
var quickSort=function(a,m,n){
if(m<n){
var pivot=partition(a,m,n);
quickSort(a,m,pivot-1);
quickSort(a,pivot+1,n);
}else if(m=n){return a;}else{return null;}
}
原创粉丝点击