数组是如何排序的呢,分享几种,一起来学习下吧!
快速排序
在数组中拿出中间一项,跟剩下数组的每一项进行比较,比中间项小放入左边的数组,比中间项大放入右边的数组。进行一轮比较后,递归把左右的数组内部进行相同方法比较,最后把首次比较的数组拼接起来。
let arr = [3,0, 6, 5,2, 1, 9]; function mySort(arr) { if(arr.length<=1){//数组只有一项不用进行比较,返回当前的数组 return arr; } let ind = Math.floor(arr.length / 2);//取中间的索引值 let mid = arr[ind];//数组中间那项 arr.splice(ind, 1);//拿出中间项后的数组 let left = []; let right = []; arr.map((item) => { if (item > mid) { right.push(item) } else { left.push(item) } }) return mySort(left).concat(mid, mySort(right)) //左右的数组内用相同方法进行排序,最好把这几项拼接在一起 } console.log(mySort(arr))
冒泡排序
比较相邻项的值,如果前者比后者大,交换顺序;
进行一轮比较后,最后一个值为最大的值;
进行下一轮比较,比上次少比较一项;
以此类推,比较剩下最后一项的时候,比较结束;
let arr = [3, 0, 6, 5, 2, 1, 9]; function mySort(arr) { for (var i = 0; i < arr.length - 1; i++) { for (var k = 0; k < arr.length - i - 1; k++) { var temp = null; if (arr[k] > arr[k + 1]) { temp = arr[k + 1]; arr[k + 1] = arr[k]; arr[k] = temp; } } } return arr; } console.log(mySort(arr))
网友评论文明上网理性发言 已有0人参与
发表评论: