三种排序方式
<!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>
版权声明:本文为博主原创文章,未经博主允许不得转载。