//快速排序
class ArrayList {
constructor () {
this.array = []
}
insert (data) {
return this.array.push(data)
}
quickSort () {
this.array = this.quick(this.array)
}
//辅助函数
quick (arr) {
let length = arr.length
if (length <= 1) return arr
let pivotValue = arr.splice(Math.floor(length / 2), 1)[0]
let leftArr = []
let rightArr = []
for (let i = 0; i < arr.length; i++) {
if (arr[i] < pivotValue) leftArr.push(arr[i])
else rightArr.push(arr[i])
}
return this.quick(leftArr).concat(pivotValue, this.quick(rightArr))
}
// 二分查找 ==> 前提是已经排好序
binarySearch (value) {
this.quickSort()
let length = this.array.length
let left = 0
let right = length -1
while (left <= right) {
let middle = Math.floor((left + right ) / 2)
if (value === this.array[middle]) return middle
else if (value < this.array[middle]) right = middle - 1
else left = middle + 1
}
return -1
}
}
let arr = new ArrayList()
arr.insert(9)
arr.insert(5)
arr.insert(8)
arr.insert(0)
arr.insert(1)
arr.insert(6)
arr.insert(4)
arr.insert(7)
arr.insert(3)
arr.insert(2)