1、利用sort进行排序
var arr=[10,11,56,1,5,6,7,33,99,100,8];
function sortNumber(a,b)
{
return a - b
}
console.log(arr.sort(sortNumber))
2、冒泡排序
function sort(arr){
for(var i=0;i<arr.length-1;i++){
console.log(arr[i])
for(var j=0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
var d=arr[j];
arr[j]=arr[j+1];`
arr[j+1]=d;
}
}
}
}
3、选择排序
function sort1(arr){
var minidnex,temp;
for(var i=0;i<arr.length-1;i++){
minidnex=i;
for(var a=i+1;a<arr.length;a++){
if(arr[a]<arr[minidnex]){//找到最小值的索引
minidnex=a;
console.log(minidnex)
}
}
temp=arr[i]; //把最小值放在空位置
arr[i]=arr[minidnex];//把最小值放在最前面
arr[minidnex]=temp;//把大值放在相对应的位置
console.log(arr)
}
}
4、插入排序
function insertionSort1(arr) {
var temp, inner;
for (var outer = 1; outer <= arr.length - 1; ++outer) {
temp = arr[outer];
inner = outer;
while (inner > 0 && (arr[inner - 1] >= temp)) {
arr[inner] = arr[inner - 1];
--inner;
}
arr[inner] = temp;
console.log(arr)
}
}
5 二元分算法(排序)
var arr1=[44,1,22,55,4,6,88,77,999,888];
function merge(left,right){
var result=[];
while(left.length&&right.length){
if(left[0] < right[0]) {
result.push(left.shift());
}
else {
result.push(right.shift());
}
}
console.log(left+"| "+right);
return result.concat(left).concat(right);//总把最后最大的那个数进行合并
}
function crr(arr){
if(arr.length==1){return arr}
var mid=Math.floor(arr.length/2);
// console.log(mid)
var leftarr=arr.slice(0,mid);
var rightarr=arr.slice(mid);
return merge(crr(leftarr),crr(rightarr))
}
console.log(crr(arr1));
网友评论