2018-08-29日前端面试题

点击查看源码

快速排序原理

  • 以某个基数为准进行排序
  • 将小于基数的数放到左边
  • 将大于基数的数放到右边
  
            //定义快速排序函数
            function quickSort(array) {
                function sort(nonius, numSize) {
                    var first = nonius;
                    var end = numSize - 1;
                    var flag = array[first];
                    if(first < end) {
                        while(first < end) {
                            //将右边小于flag的数放到左边
                            for(; first < end; end--) {
                                if(flag > array[end]) {
                                    array[first] = array[end];
                                    first++;
                                    break;
                                }
                            }
                            //将左边大于flag的数放到右边
                            for(; first < end; first++) {
                                if(flag < array[first]) {
                                    array[end] = array[first];
                                    end--;
                                    break;
                                }
                            }
                        }
                        //设置基数
                        array[first] = flag;
                        sort(0, first);
                        sort(first + 1, numSize);
                    }
                };
                sort(0, array.length);
                return array;
            };
            var myarr = [6, 1, 2, 7, 9, 3, 4, 5];
            console.log(quickSort(myarr)); // [1, 2, 3, 4, 5, 6, 7, 9]

你可能感兴趣的:(2018-08-29日前端面试题)