- 快速排序
let quicksort=(arr)=>{
if (arr.length <= 1) { return arr }
let midIndex = Math.floor(arr.length/2)
//重要 自己原来犯了错误,直接传了arr(midIndex),陷入了死循环
let middleVal = arr.splice(midIndex, 1)[0]
console.log('middleVal')
console.log(middleVal)
let left =[]
let right =[]
for(let i =0;i<arr.length;i++){
console.log(arr[i])
if(arr[i]<middleVal){
left.push(arr[i])
console.log('left')
console.log(left)
}else{
right.push(arr[i])
console.log('right')
console.log(right)
}
}
//利用递归实现整个数组的排序
return quicksort(left).concat([middleVal],quicksort(right))
}
- 计数排序
let countSort = (arr) => {
let hashTable = {}
let max = 0
let sortArr = []
for (let i = 0; i < arr.length; i++) {
if (arr[i] in hashTable) {
hashTable[arr[i]] += 1
} else {
hashTable[arr[i]] = 1
}
//更新最大值max
if (arr[i] > max) {
max = arr[i]
}
}
console.log(hashTable)
//小于等于<=max 少了等于号最大值不能输出
for (let j = 0; j <=max; j++) {
for (let i = 0; i < hashTable[j]; i++) {
sortArr.push(j)
}
}
return sortArr
}