快速排序-JS代码实现

来源:互联网 发布:美工外包风险 编辑:程序博客网 时间:2024/06/05 22:57

快速排序算法思想:取出数组的第一个值和最后一个值的下标,并设指针i,j分别指向两头,以第一个值为标准并取出赋给temp,只要i<j,即分别从两侧开始的指针不指向同一个位置时,从后往前检查将遇到的第一个小于标准值的数值赋给array[i],i++,再从前往后检查将遇到的第一个大于标准值的数值赋给array[j],j--,最后将temp赋给指针i所指向的对象。然后,用递归分别对array[i]两边的数组对象所组成的数组进行快速排序。

实际上,每一次快速排序是将所排序数组的第一个值放在其应在的位置,并保证其左侧的值都小于它,右侧的值都大于它。


<!DOCTYPE html><html><head>    <title>快速排序-JS代码实现</title>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1"></head><body onload="init()">    <script>    function init(){        function quickSort(array, left, right){            var i=left, j=right, temp;            if(left < right){                temp = array[left];                while(i!=j){                    while(j>i && array[j]>temp)                        j--;                    if(i<j){                        array[i]=array[j];                        i++;                    }                    while(j>i && array[i]<temp)                        i++;                    if(i<j){                        array[j]=array[i];                        j--;                    }                }                array[i] = temp;                document.write(array + "<br/>");                quickSort(array, left, i-1);                quickSort(array, i+1, right);            }        }        var arrayA = [3, 5, 2, 6, 4, 1];        document.write("原始数组:" + arrayA + "<br/><br/>");        quickSort(arrayA, 0, arrayA.length - 1);                }    </script></body></html>


0 0