「绍棠」手写数组快速排序

「绍棠」手写数组快速排序关于快排算法的详细说明 可以参考阮一峰老师的文章快速排序 快速排序 的思想很简单 整个排序过程只需要三步 1 在数据集之中 选择一个元素作为 基准 pivot 2 所有小于 基准 的元素 都移到 基准 的左边 所有大于 基准 的元素

大家好,欢迎来到IT知识分享网。

关于快排算法的详细说明,可以参考阮一峰老师的文章快速排序

“快速排序”的思想很简单,整个排序过程只需要三步:

(1)在数据集之中,选择一个元素作为”基准”(pivot)。

(2)所有小于”基准”的元素,都移到”基准”的左边;所有大于”基准”的元素,都移到”基准”的右边。

(3)对”基准”左边和右边的两个子集,不断重复第一步和第二步,直到所有子集只剩下一个元素为止。

function quickSort(arr){ if(arr.length<=1){ // 长度小于等于1 返回自己 return arr } let centerIndex = Math.floor(arr.length/2) // 中间index let centerData = arr.splice(centerIndex,1)[0] // 中间index 对应的 之,并从arr中剔除 let letArry = [] let rightArry = [] for(let i=0;i<arr.length;i++){ if(arr[i]<centerData){ // 小于中间值放左数组 否则放右数组 letArry.push(arr[i]) }else{ rightArry.push(arr[i]) } } return quickSort(letArry).concat([centerData],quickSort(rightArry)) // 左数组快排后和中间值,右数组拼接 } let arr = [1,5,6,2,4,8,7,9,6,3,2,2,0] console.log(quickSort(arr))

二、sort排序

var arry = [9,5,6,7,5,6,3,1,0] arry.sort() // [0, 1, 3, 5, 5, 6, 6, 7, 9] var points = [ {name:'KBC',data:9}, {name:'CBC',data:8}, {name:'BBC',data:6}, {name:'EBC',data:1}, {name:'MBC',data:5}, {name:'ABC',data:7} ]; points.sort(function(a, b){ return a.data - b.data })

三、冒泡排序

function maopao(arr){ for(let i=0;i<arr.length-1;i++){ for(let j=i;j<arr.length;j++){ if(arr[i]>arr[j]){ let changeData = arr[i] arr[i] = arr[j] arr[j] = changeData } } } return arr } let arr = [1,5,6,2,4,8,7,9,6,3,2,2,0] console.log(maopao(arr))

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/93731.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信