week2 day04
①冒泡排序
思路:
先遍历数组;
两两相比较,原理:比较两个相邻的元素,将值大的元素交换至右端。;
嵌套循环 外面控制几轮;
里面控制 每一轮多少次;
var arr = [10, 198, 19, 99, 9, 11, 18, 1, 2, 5, 9];
for (var i = 0; i <= arr.length - 1; i++) {
for (var j = 0; j < arr.length - 1 - i; j++) {
if (arr[j] > arr[j + 1]) {
var tmp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = tmp;
}
}
}
document.write(arr);
口决:
双层for循环 一层比上一层少一次
里层减外层 变量相交换
冒泡排序动态图
②选择排序
思路:
先找到数组内最小数字的索引
这个索引再跟下标0 交换
此时下标0 就是数组的最小值
跳过下标[0]
从下标[1] 到最后 找到最小值的索引
然后在跟下标[1] 交换
以此类推....
var arr2 = [9, 3, 6, 10, 2, 5, 11, 4, 1, 7];
for (var j = 0; j < arr2.length - 1; j++) {
var minIndex = j;
for (var i = j + 1; i < arr2.length; i++) {
if (arr2[i] < arr2[minIndex]) {
minIndex = i;
}
}
var temp = arr2[minIndex];
arr2[minIndex] = arr2[j];
arr2[j] = temp;
}
document.write(arr2 + '
')
③数组塌陷 ———塌陷就是为了数组去重做铺垫
var arr2 = [9, 3, 6, 10, 2, 5, 11, 4, 1, 7];
for (var i = 0; i < arr2.length; i++) {
arr2.splice(i, 1);
i--;
}
console.log(arr2)
for (var i = arr2.length - 1; i >= 0; i++) {
arr2.splice(i, 1)
}
console.log(arr2)
④数组去重
var arr2 = [9, 9, 3, 1, 9, 6, 10, 2, 5, 11, 4, 1, 7];
var arr = [];
for (var i = 0; i < arr2.length; i++) {
if (arr.indexOf(arr2[i]) == -1) {
arr.push(arr2[i]);
}
}
console.log(arr)
arr2.sort(function (a, b) { return a - b });
for (var i = 0; i < arr2.length; i++) {
if (arr2[i] == arr2[i + 1]) {
arr2.splice(i, 1);
i--;
}
}
console.log(arr2)
for (var i = 0; i < arr2.length; i++) {
var index = arr2.indexOf(arr2[i], i + 1);
if (index !== -1) {
arr2.splice(index, 1);
i--;
}
}
console.log(arr2)
var res = Array.from(new Set(arr2));
document.write(res);
console.log(res)
var res = [...new Set(arr2)];
document.write(res)