js 几种最常见的排序算法

js 排序算法:

首先自定义一个数组 其中包含几个数字为后续调用各种排序函数传参数

//自定义三个数字5 10 20 进行降幂排序
var a=[5,10,20,50,23];

1.sort()排序

只能对字符进行排序,如果要对数字进行排序就要使用“比较函数(这里是sortby(),没有指定的名字,自己取名)”进行调用
从小到大排序为a-b,从大到小为b-a

function sortby(a,b){
    
    
	return b-a;
}		
document.write(a.sort(sortby));

2.选择排序

每次循环都找到最大的元素,然后与前边排序好的最后一位进行交换

//降序
function selectSort(a){
    
    
	var min=null
	for(var i=0;i<a.length-1;i++){
    
    
		min=i;
		for(var j=i+1;j<a.length;j++){
    
    
			if(a[j]>a[min]){
    
    
				min=j;
			}
			if(min!=i){
    
    
				var c=a[min];
				a[min]=a[j];
				a[j]=c;
			}
		}
	}
	return a;
}
document.write(selectSort(a))

3.冒泡排序

两个相邻的元素进行比较,小的往后放

function bubbleSort(a){
    
    
	for(var i=0;i<a.length-1;i++){
    
    
		for(var j=0;j<a.length-i-1;j++){
    
    
			if(a[j]<a[j+1]){
    
    
				var c=a[j];
				a[j]=a[j+1];
				a[j+1]=c;
			}
		}
	}
	return a;
}	
document.write(bubbleSort(a));

4.插入排序

从数组中下标为1的数开始,与前边的元素进行比较,小的往后放

function insertSort(a) {
    
    
    for (var i = 1; i <a.length; i++) {
    
    
       // 待插元素
       var item = a[i];
       //排序后的末尾元素
       var j = i - 1;
       // 从排序好的末尾元素开始遍历
       // 如果大于待插元素就把当前元素往后挪
       while (j >= 0 && a[j] > item) {
    
    
           arr[j + 1] = a[j];
           j--;
       }
       // 插入待插元素
       a[j + 1] = item;
   }
   return arr;
}
document.write(insertSort(a));

5.快速排序

function quickSort(a){
    
    
	if(a.length<=1){
    
    
		return arr
	}
	var midindex=Math.floor(arr.length/2)
	var miditem=a.splice(midindex,1)[0]
	var left=[]
	var right=[]
	for(var i=0;i<a.length;i++){
    
    
		if(miditem>a[i]){
    
    
			left.push(a[i])
		}else{
    
    
			right.push(a[i])
		}
	}
	return quickSort(left).concat(miditem,quickSort(right))
}

document.write(quickSort(a));

猜你喜欢

转载自blog.csdn.net/isfor_you/article/details/109514314