1.选择排序

// 选择排序
chosedSort () {
var arr = [1, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 33423, 432]
for (let index = 0; index < arr.length - 1; index++) {
let num = arr[index]
let tempIndex = index
for (let subIndex = index + 1; subIndex < arr.length; subIndex++) {
if (num > arr[subIndex]) {
num = arr[subIndex]
tempIndex = subIndex
}
}
arr[tempIndex] = arr[index]
arr[index] = num
}
console.log(arr)
},
2.插入排序

// 插入排序
insertSort () {
var arr = [56, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 33423, 432]
for (let index = 1; index < arr.length; index++) {
let num = arr[index]
for (let subIndex = index - 1; subIndex >= 0; subIndex--) {
if (num >= arr[subIndex]) {
if (index !== subIndex + 1) {
// 删除元素
arr.splice(index, 1)
// 插入元素
arr.splice(subIndex + 1, 0, num)
}
break
}
}
}
console.log(arr)
},
3.冒泡排序

// 冒泡排序
bubblingSort () {
var arr = [1, 4, 2, 434, 123, 5343, 12, 53, 123, 1, 3, 3, 45, 1, 2, 34, 5, 6, 8, 93, 123, 34, 435, 1, 2, 3, 332, 123, 12, 143, 2, 44, 312, 432]
for (let index = 1; index < arr.length; index++) {
for (let subIndex = 0; subIndex < arr.length - index; subIndex++) {
let subNum = arr[subIndex]
if (subNum > arr[subIndex + 1]) {
arr[subIndex] = arr[subIndex + 1]
arr[subIndex + 1] = subNum
}
}
}
console.log(arr)
},
-
归并排序
归并排序
5.快速排序
快速排序
// 快速排序,使用递归
quickSort (arr, left, right) {
// console.log(arr)
// console.log(left + '/' + right)
// 定义i和j的原因是下面需要使用这两个值确定下一个分组的递归左右边界
let i = left
let j = right
// 不能使用0,因为arr永远是完整的数组,但是left是一直变的
let key = arr[i]
// 排序结束
if (left >= right) {
return
}
while (i < j) {
// 当i<j,关键值小于从后面数的出现比key值小的数之前一直自减
while (i < j && arr[j] >= key) {
j--
}
// 这个时候key值是最小的,证明结束了
if (i === j) {
break
}
// 这里需要了解一下i++和++i是不一样滴
arr[i++] = arr[j]
while (i < j && arr[i] <= key) {
i++
}
// 这个时候key值是最大的,证明结束了
if (i === j) {
break
}
// 这里需要了解一下j--和--j是不一样滴
arr[j--] = arr[i]
}
arr[i] = key
this.quickSort(arr, left, j - 1)
this.quickSort(arr, j + 1, right)
},
网友评论