冒泡排序
1.相邻两个数,两两比较,如果前面的数大于后面的数,交换位置
2.第一轮比较完,最大的数到最后面重复上述操作,第二轮找到第二大的数...
function sort() {
for (var i = 0; i < arr.length - 1; i++) {
// n - 1次冒泡比较
for (var j = 0; j < arr.length - 1 - i; j++) {
//内层循环,进行 n - 1 - i 循环
if (arr[j] > arr[j + 1]) {
//相邻两个数两两比较,如果前一个数大于后一个数,交换位置
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
选择排序
1.n个数,进行n - 1 次选择
2.每次选择未排序的数中找最小数的下标,与前面的数交换位
function xuanze() {
for (var i = 0; i < arr.length - 1; i++) {
var minPos = i; //假设每次循环的最小数下标是第一个
for (var a = i + 1; a < arr.length; a++) {
if (arr[minPos] > arr[a])
minPos = a;
// arr[0] = arr[minPos]
}
var temp = arr[i];
arr[i] = arr[minPos];
arr[minPos] = temp;
}
}
数组去重
1.用indexOf includes实现数组去重
function test1() {
var newArr = []
for (var i = 0; i < arr.length - 1; i++) {
//判断新数组中是否有原数组当前元素,如果没有,存储到新数组中
if (newArr.indexOf(arr[i]) == -1) {
newArr.push(arr[i])
}
// if(!newArr.includes(arr[i])){
// newArr.push(arr[i])
// }
}
console.log(newArr);
}
test1()
2.利用双重for循环+splice实现
function test2() {
for(var i = 0; i < arr.length; i++){
var item = arr[i] //外层循环元素
for(var j = i + 1; j < arr.length; j++){
if(item == arr[j]){
arr.splice(j,1)
j--
}
}
}
console.log(arr);
}
test2()