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'))