数组、冒泡排序与去重
数组冒泡排序:
var arr = [3,2,4,1];//3次
//[3,2,1,4];第一次循环的结果
//var n = null;
// 从小到大排序:
// 第一步:数字交换;
if(arr[0]>arr[1]){//0,1
n = arr[0];
arr[0] = arr[1];
arr[1] = n;
}//[2,3,4,1]
// 第二步:冒泡——将最大的数字冒泡到最后;
for (var i = 0; i < arr.length-1; i++) {
if(arr[i]>arr[i+1]){
n = arr[i];
arr[i] = arr[i+1];
arr[1+i] = n;
}
}
// 第三步:循环,对比每一个数字,让他们实现从小到大排列;
for (var j = 0; j < arr.length-1; j++) {
for (var i = 0; i < arr.length-1; i++) {
if(arr[i]>arr[i+1]){
n = arr[i];
arr[i] = arr[i+1];
arr[1+i] = n;
}
}
}
// 第四步:优化(已经冒到最后的最大数不用对比);
for (var j = 0; j < arr.length-1; j++) {
for (var i = 0; i < arr.length-1-j; i++) {
if(arr[i]>arr[i+1]){
n = arr[i];
arr[i] = arr[i+1];
arr[1+i] = n;
}
}
}
console.log(arr);
数组去重:
var arr1 = [2,4,1,2,3,4,5,3,4,5];
var arr2 = [];
var n ;
//去重第1步,向空数组添加第一个数值;
n=-1;
if (n==-1) {
arr2.push(arr1[0]);
}
//去重第2步,判断原数组中的下一个值是否与新数组的值有相等情况,没有则插入新数组;
for (var j = 0; j < arr2.length; j++){
if(arr1[1]==arr2[j]){
n=j;//如果有相等的,就改变n的值,让它不为-1;
break;//此时跳出循环不用再往下对比了;
}
}
if (n==-1) {
arr2.push(arr1[1]);
}
//去重第3步,使用循环,判断原数组中的所有值是否与新数组的值有相等情况,没有则插入新数组;
for (var i = 0; i < arr1.length; i++) {
n = -1;//arr1数组在取得一个值对比的时候,需要初始化n为-1,否则n会继续上一次产生的值,有可能在符合条件的时候依然不是-1;
for (var j = 0; j < arr2.length; j++) {
if(arr1[i]==arr2[j]){
n=j;
break;
}
}
if (n==-1) {
arr2.push(arr1[i]);
}
}
console.log(arr2);