var arr = [2,1,3];
在C#中的冒泡排序:
for(var i=0;i<arr.length -1 ;i++){ for(var j=0;j<arr.length -1 -i;j++){ if(arr[j] - arr[j+1] > 0){ var t = arr[j]; arr[j] = arr[j+1]; arr[j+1] = t; } } }
在JavaScript中的冒泡排序:
arr.sort(function(a,b) {return b-a});
是怎么演变过来的,步骤如下:
- 把if(arr[j] - arr[j+1] > 0)抽象成如下
if(f(arr[j] , arr[j+1]) > 0){}
- 在整个冒泡排序外面套上一个函数名,使其变为函数体
//arr:数组 //f:函数 var mySort = function(arr,f){ //不给f传值,默认为升序排列 //f=f ? f:function(a,b) {return a-b;}; //下面是三元表达式的简写 f=f || function(a,b) {return a-b;}; for(var i=0;i<arr.length -1 ;i++){ for(var j=0;j<arr.length -1 -i;j++){ if(f(arr[j] , arr[j+1]) > 0){ var t = arr[j]; arr[j] = arr[j+1]; arr[j+1] = t; } } } }
- 使用这个函数
mySort(arr,f); alert(arr);
f代表一个函数,因此写成如下样式
//b-a可以实现降序排序 mySort(arr,function(a,b) {return b-a}); alert(arr);