1.冒泡排序
function foo1(array){ for(let i =0;i<array.length;i++){ for(let j=0;j<array.length;j++){ if(array[i]<array[j]){ let temp = array[i] array[i] = array[j] array[j] = temp } } } return array }
2.快速排序
var values=[] function foo2(array){ if(array.length>1){ let key = ~~(array.length/2); let list1 = [] let list2 = [] for(let o=0;o<array.length;o++){ if(array[o]<array[key]){ list1.push(array[o]) } if(array[o]>array[key]){ list2.push(array[o]) } } list1.length!==0&&foo2(list1) values.push(array[key]) list2.length!==0&&foo2(list2); }else{ values.push(array[0]) } }
3.选择排序
var example=[8,94,15,88,55,76,21,39]; function selectSort(arr){ var len=arr.length; var minIndex,temp; console.time('选择排序耗时'); for(i=0;i<len-1;i++){ minIndex=i; for(j=i+1;j<len;j++){ if(arr[j]<arr[minIndex]){ minIndex=j; } } temp=arr[i]; arr[i]=arr[minIndex]; arr[minIndex]=temp; } console.timeEnd('选择排序耗时'); return arr; }
5、不需要借助第三个临时变量,实现两个变量的交换
function swap(a,b){ b=b-a; a=a+b; b=a-b; return [a,b]; }
6、数组按属性排序
function compare(po){ return function(a,b){ let temp1 = a[po]; let temp2 = b[po]; return temp1-temp2 } } var list = [{ id:'a1', num:21 }, { id:'a2', num:2211 }, { id:'a3', num:213 }, { id:'a4', num:221 }, { id:'a5', num:2111 }]; list.sort(a('id'))