//插入排序
InsertionSort: function(arr) {
console.log('插入排序')
for (let i = 1; i < arr.length; i++) {
for (let j = i - 1; j >= 0; j--) {
if (arr[j] > arr[j + 1]){
let temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
} else {
break
}
}
}
return arr;
},
// 选择排序
selectSort: function (arr) {
console.log('选择排序')
for (let i = 0; i < arr.length - 1; i++) {
let minIdx = i
for (let j = i+1; j < arr.length; j++) {
minIdx = arr[minIdx] > arr[j] ? j : minIdx
}
let temp = arr[i]
arr[i] = arr[minIdx]
arr[minIdx] = temp
}
},
// 冒泡排序
bubbleSort: function (arr) {
console.log('冒泡排序')
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j+1]){
let temp = arr[j]
arr[j] = arr[j+1]
arr[j+1] = temp
}
}
}
},
// 快速排序
quickSort: function (arr, begin, end) {
console.log('快速排序')
if (begin < end) {
let left = begin
let right = end
let temp = arr[left]
while (left < right) {
while (left < right && arr[right] >= temp) {
// 从高位开始查找 高位值>=基准值 保持数组不动 向左移动高位指针
right--
}
// 跳出循环后 当前高位值小于基准值 把高位值交换到低位
arr[left] = arr[right]
while (left < right && arr[left] <= temp) {
left++
}
arr[right] = arr[left]
}
arr[left] = temp
this.quickSort(arr, begin, left - 1)
this.quickSort(arr, left + 1, end)
}
},
数组排序方法归纳
最新推荐文章于 2022-07-20 15:30:00 发布