/*----------------冒泡排序----------------*/
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