冒泡排序:
// function bubbleSort(arr){ // //确定循环的次数 // for(var i = 0 ; i < arr.length - 1 ; i++){ // //每一轮 数值比较 // for(var k = 0 ; k < arr.length - i - 1; k++){ // //谁大谁往后排 // if(arr[k] > arr[k + 1]){ // var temp = arr[k]; // arr[k] = arr[k + 1]; // arr[k + 1] = temp; // } // } // } // return arr; // } // console.log(bubbleSort(arr));
选择排序:(类似打擂台)
var arr = [6,5,1,3,2]; function chooseSort(arr){ //确定几轮 for(var i = 0 ; i < arr.length - 1 ; i++){ //每一轮都和第一个比较 for(var k = i + 1 ; k < arr.length ; k++){ //谁小放前面 if(arr[i] > arr[k]){ var temp = arr[i]; arr[i] = arr[k]; arr[k] = temp; } } } return arr; } console.log(chooseSort(arr));
快速循环:
function quickSort ( arr ){ // 递归结束条件 if(arr.length <= 1){ return arr; } var midIndex = parseInt(arr.length / 2), //取中间值索引 midValue = arr[midIndex], leftArr = [], rightArr = []; //遍历arr数组。每一个值和中间的值相比较,大的放右侧数组。小的等的放左侧。 for(var i = 0; i < arr.length; i++){ // 如果是中间小标,跳出本次循环,(中间值不用和自身比较) if(i == midIndex){ continue; } if(arr[i] <= midValue){ leftArr.push(arr[i]); }else{ rightArr.push(arr[i]); } } // 调用递归函数处理左右数组 var res = quickSort(leftArr).concat(midValue).concat(quickSort(rightArr)); return res; } console.log(quickSort(arr));
原文:https://www.cnblogs.com/zcjlllb/p/11461607.html