1.冒泡排序
<script>
// 时间复杂度o(n^2) 时间复杂度(最好):O(n) 稳定性:稳定
//思路:数组中有n个数,比较相邻的两个数,如果前者大于后者,就把两个数位置交换,这样第一轮就可以选出最大的数放在后面,那么经过n-轮之后 ,就完成了所有的排序
const arr = [10, 30, 50, 69, 48, 77, 82, 10, 221];
for (let i = 0; i < arr.length; 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;
}
}
}
alert(arr);
</script>
2.选择排序
<script>
// 时间复杂度:O(n^2) 时间复杂度(最好):O(n^2) 稳定性:不稳定
// 在一个长度为n的数组中,第一次遍历n-1找到最小的与之交换
// 第二次从下个数开始遍历n-2个数,找到最小的与第二个数交换
// 重复以上操作知道第n-1次遍历最小的数和第n-1个数交换,完成排序
const arr = [10, 30, 50, 69, 48, 77, 82, 10, 221];
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
alert(arr);
</script>