玖叶教程网

前端编程开发入门

「绍棠」 排序(绍棠社区地址)

手写数组快速排序*

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

(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))

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言