三种排序方式

来源:互联网 发布:js点击空白处触发事件 编辑:程序博客网 时间:2024/06/05 05:34
<!DOCTYPE html><html><head>  <title></title></head><body><script type="text/javascript">//选择排序        function xuanzepaixu() {            var min/*最小项的索引*/, tmp;            for (var out = 0; out < a.length - 1; out++) {//比较的次数是length-1                min = out;                for (var inner = out + 1; inner < a.length; inner++) {//这里是a.length,不是a.lenght-1,因为后者会导致右数第2项没法参与排序。                    if (a[inner] < a[min]) {                        min = inner;                    }                    //将最小的项移动到左侧                    tmp = a[out];                    a[out] = a[min]                    a[min] = tmp;                }            }            alert(a);        };      var  a = [66, 53, 11, 5, 4, 3, 2, 1];        xuanzepaixu(a)//冒泡排序        function bubbleSort() {            for (var i = 0; i < a.length - 1; i++) {//比较的次数是length-1                for (var j = 0; j < a.length - 1 - i; j++) {                    if (a[j] > a[j + 1]) {                        var tmp = a[j];                        a[j] = a[j + 1];                        a[j + 1] = tmp;                    }                }            }            alert(a);        };      var a = [66, 53, 11, 5, 4, 3, 2, 1];        bubbleSort(a)//快速排序  function quickSort(arr){  if(arr.length<=1){    return arr;//如果数组只有一个数,就直接返回;  }   var num = Math.floor(arr.length/2);//找到中间数的索引值,如果是浮点数,则向下取整  var numValue = arr.splice(num,1);//找到中间数的值  var left = [];  var right = [];   for(var i=0;i<arr.length;i++){    if(arr[i]<numValue){      left.push(arr[i]);//基准点的左边的数传到左边数组    }    else{      right.push(arr[i]);//基准点的右边的数传到右边数组    }  } return quickSort(left).concat([numValue],quickSort(right));//递归不断重复比较}alert(quickSort([32,45,37,16,2,87]));//弹出“2,16,32,37,45,87”</script></body></html>

0 0
原创粉丝点击