日期:2014-05-16  浏览次数:20481 次

javascript各种排序方法
var values_2 = [10, 6, 20, 33, 2, 5];
        function SelectSort(arr) { //选择排序->直接选择排序
            var temp;
            for (var i = 0; i < arr.length; i++) {
                var k = i;
                for (var j = i + 1; j < arr.length; j++) {
                    if ((arr[j]) < (arr[k]))
                        k = j;
                }
                if (k != i) {
                    temp = arr[i];
                    arr[i] = arr[k];
                    arr[k] = temp;
                }
            }
            return arr;
        }

        //最高效的排序方法
        function QuickSort(arr) { //交换排序->快速排序
            if (arguments.length > 1) {
                var low = arguments[1];
                var high = arguments[2];
            } else {
                var low = 0;
                var high = arr.length - 1;
            }
            if (low < high) {
                // function Partition
                var i = low;
                var j = high;
                var pivot = arr[i];
                while (i < j) {
                    while (i < j && arr[j] >= pivot)
                        j--;
                    if (i < j)
                        arr[i++] = arr[j];
                    while (i < j && arr[i] <= pivot)
                        i++;
                    if (i < j)
                        arr[j--] = arr[i];
                } //endwhile
                arr[i] = pivot;
                // end function
                var pivotpos = i; //Partition(arr,low,high);
                QuickSort(arr, low, pivotpos - 1);
                QuickSort(arr, pivotpos + 1, high);
            } else
                return;
            return arr;
        }

        function BubbleSort(arr) { //交换排序->冒泡排序
            var temp;
            for (var i = 0; i < arr.length; i++) {
                for (var j = arr.length - 2; j >= i; j--) {
                    if ((arr[j + 1]) < (arr[j])) {
                        temp = arr[j + 1];
                        arr[j + 1] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            return arr;
        }

        alert(QuickSort(values_2));
        //alert(SelectSort(values_2));
        //alert(BubbleSort(values_2));