1.冒泡排序
数组中有 n 个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1(数组的 length - 1) 轮,就完成了所有数的排序。
<body>
<script>
function arrSort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = 0; j < arr.length - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
let temp = arr[j]
arr[j] = arr[j + 1]
arr[j + 1] = temp
}
}
}
return arr3
}
let arr = [1, 4, 3, 2, 34, 5, 1]
console.log(arrSort(arr));
</script>
</body>
2.插入排序
插入排序的工作原理就是将未排序数据,对已排序数据序列从后向前扫描,找到对应的位置并插入。插入排序通常采用占位的形式,空间复杂度为O(1),因此,在从后向前扫描的过程中,需要反复的把已排序的元素逐步向后挪位,为新插入元素提供插入的位置。
<body>
<script>
function insertSort(arr) {
for (let i = 1; i < arr.length; i++) {
let temp = arr[i]
let j = i - 1//默认已排序的元素
while (j >= 0 && arr[j] > temp) {
arr[j + 1] = arr[j]
j--
}
arr[j + 1] = temp
}
return arr
}
let arr = [1, 2, 5, 4, 43, 5]
console.log(insertSort(arr));
</script>
</body>