SOURCE

/*----------------冒泡排序----------------*/

var arr0 = [ 3, 8, 6, 7, 5, 4 ];				//定义数组

function bubblingSort( arr ){
  
  var len = arr.length;
  
  for( var i=0; i<len; i++ ){
    
    for( var j=0; j<len-1; j++ ){
      
      if( arr[ j ] > arr[ i ] ){
        
        var temp = arr[j];
      
        arr[j] = arr[i];
        
        arr[i] = temp;
      }
    }
  }
  return arr;
}

bubblingSort(arr0);
console.log(arr0);
console.log("冒泡排序");

/*----------------选择排序----------------*/

var arr1 = [ 3, 1, 2, 5, 4, 6 ];				//定义数组

function selectionSort( arr ){				
  
  var len = arr.length,									//定义长度
      minIndex,													//定义最小值索引
      temp;															//定义临时存放容器
  
  for(var i=0; i<len-1; i++){						//遍历 i 循环
    
    minIndex = i;												//将最小值索引假设为 i
    
    for(var j=i+1; j<len; j++){					//遍历 j 循环
      
      if(arr[ j ] < arr[ minIndex ]){		//找出最小值
        minIndex = j;										//更新最小值索引
      }
    }
    
    temp = arr[ i ];										//将较大值存放到临时容器
    
    arr[ i ] = arr[ minIndex ];					//将较大值,更改为最新的最小值
    
    arr[ minIndex ] = temp;							//将原本最小值,更改为较大值
  }
  return arr; 													//返回原数组(原数组会被修改)
}

selectionSort( arr1 )
console.log( arr1 );
console.log("选择排序");


/*----------------快速排序----------------*/

var arr2 = [ 9, 5, 4, 6, 8, 7 ];				//定义数组

function quickSort( arr ){
  
  var len = arr.length,									//定义长度
      leftArr = [],											//定义左数组
      rightArr = [],										//定义右数组
      middle = [ arr[ Math.floor(len/2) ] ];	//定义中间数组
  
  if(len <=1 ){
    return arr;
  }
  
	for(var i=0; i<len; i++){
    if( arr[ i ] > middle[ 0 ] ) {			//大于或等于中间值,放入右数组
      rightArr.push( arr[ i ] );
    }else {														  //小于中间值,放入左数组
      leftArr.push( arr[ i ] );
    }
  }
  return quickSort(leftArr).concat(quickSort(rightArr));	//将来个数组排序拼接
}

console.log(quickSort( arr2 ));
console.log("快速排序");
console 命令行工具 X clear

                    
>
console