<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>基础排序默写第一遍</title>
</head>
<body>
<script>
// 冒泡排序
function bubbleSort(arr) {
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]) {
[arr[j], arr[j + 1]] = [arr[j + 1], arr[j]];
}
}
}
return arr;
}
// 出现的问题:console 单词打错了
// 二分法查找
function searching(arr, target) {
let start = 0;
let end = arr.length - 1;
let middleIndex;
let middleValue;
while (start <= end) {
middleIndex = Math.floor((start + end) / 2);
middleValue = arr[middleIndex];
if (target === middleValue) {
return middleIndex;
} else if (target < middleValue) {
end = middleIndex - 1;
} else {
start = middleIndex + 1;
}
}
return -1;
}
// 出现的问题:忘记写输出语句
// 选择排序
function selectSort(arr) {
let minIndex = 0;
for (let i = 0; i < arr.length - 1; i++) {
minIndex = i;
for (let j = i + 1; j < arr.length; j++) {
if (arr[minIndex] > arr[j]) {
minIndex = j;
}
}
[arr[minIndex], arr[i]] = [arr[i], arr[minIndex]];
}
return arr;
}
// 出现的问题:忘记排序流程;
//快速排序
function quickSort(arr) {
if (arr.length <= 1) {
return arr;
}
let middleIndex = Math.floor(arr.length / 2);
let middle = arr.splice(middleIndex, 1)[0];
let left = [];
let right = [];
for (let i = 0; i < arr.length; i++) {
if (arr[i] < middle1) {
left.push(arr[i]);
} else {
right.push(arr[i]);
}
}
return quickSort(left).concat(middle1, quickSort(right));
}
// 出现的问题:忘记排序流程;改变了原数组 splice 将中间数剔除出来;
</script>
</body>
</html>