最近在学习一些常见的算法:
一、冒泡算法
var arr,item1,item2; arr = [4,1,3,5,2,8,6]; for(var i=0; i<arr.length; ++i){ for(var j=0; j<arr.length - 1 - i; ++j){ item1 = arr[j]; item2 = arr[j+1]; if(item1 > item2){ arr[j] = item2; arr[j+1] = item1; } } } console.log(arr); arr = [4,1,3,5,2,8,6]; for(var i=0; i<arr.length; ++i){ for(var j=0; j<arr.length - 1 - i; ++j){ var num = arr[j]; if(arr[j] > arr[j+1]){ arr[j] = arr[j+1]; arr[j+1] = num; } } } console.log(arr);
二、快速排序
var arr = [4,1,3,5,2,8,6]; function quick(arr){ if(arr.length<=1){ return arr; } var index = Math.floor(arr.length/2); var middle = arr.splice(index,1)[0];//获取删除的数字 var left = [],right = []; for(var i=0; i<arr.length;++i){ if(arr[i] < middle){ left.push(arr[i]); }else{ right.push(arr[i]); } } return quick(left).concat([middle],quick(right)); } console.log(quick(arr)); // [1, 2, 3, 4, 5, 6, 8]
三、计数排序
var arr = [4,1,2,3,5,2,8,6]; function count(arr){ var json = {}; for(var i in arr){ if(!json[arr[i]]){ json[arr[i]] = 1; }else{ json[arr[i]]++; } } var index = 0; for(var i in json){ while(json[i] > 0){ arr[index] = Number(i); json[i]--; index++; } } return arr; } console.log(count(arr)); // [1, 2, 2, 3, 4, 5, 6, 8]
四、选择排序
var arr = [4,1,3,5,2,8,6]; function select(arr){ var index; for(var i=0; i<arr.length-1; ++i){ index = i; for(var j=i+1; j<arr.length; ++j){ if(arr[index] > arr[j]){ index = j; } } if(index != i){ var temp = arr[i]; arr[i] = arr[index]; arr[index] = temp; } } return arr; } console.log(select(arr)); // [1, 2, 3, 4, 5, 6, 8]