前端排序

268 阅读1分钟

1、冒泡排序

function bubbleSort(arr){
	for(let i=0;i<arr.length-1;i++){
		for(let j=0;j<arr.length-1-i;j++){
			if(arr[j]>arr[j+1]){
				let temp=arr[j+1]
				arr[j+1]=arr[j]
				arr[j]=temp
			}
		}
	}
	return arr
}

2、选择排序

function selectionSort(arr){
	for(let i=0;i<arr.length;i++){
		let min=arr[i]
		let index=i;
		for(let j=i+1;j<arr.length;j++){
			if(arr[j]<min){
				min=arr[j]
				index=j
			}
		}
		let temp=arr[i]
		arr[i]=min
		arr[index]=temp
	}
	return arr
}

3、插入排序

function insertSort(arr) {
    for(let i = 1; i < arr.length; i++) {  //外循环从1开始,默认arr[0]是有序段
        for(let j = i; j > 0; j--) {  //j = i,将arr[j]依次插入有序段中
            if(arr[j] < arr[j-1]) {
                [arr[j],arr[j-1]] = [arr[j-1],arr[j]];
            } else {
                break;
            }
        }
    }
    return arr;
}

4、快速排序

const quciksort=(arr)=>{
	if(arr.length<=1){
		return arr
	}
	const midIndex=Math.floor((arr.length-1)/2);
	const midIndexVal=arr.splice(midIndex,1);
	const midVal=midIndexVal[0]
	let left=[]
	left right=[]
	
	for(let i;i<arr.length;i++){
		if(arr[i]<midVal){
			left.push(arr[i])
		}else{
			right.push(arr[i])
		}
	}
	return quciksort(left).contact(midVal,quciksort(right))
}