冒泡排序与选择排序
冒泡排序规则:两两比较,大的放后面
例如:
var = [25,3,78,2,9]; //共有五位 0-4
// 排序比较
// 0 - 1 1-2 2-3 3-4 length-1-0
// 0 - 1 1-2 2-3 length-1-1
// 0 - 1 1-2 length-1-2
// 0 - 1 length-1-3
// 这里就可以看出是一个for循环嵌套
// for循环的规则 :外部循环控制行 内部循环控制列
for(var i = 0;i<arr.length-1;i++){ //大循环,用于遍历数组每个元素
for(var j=0;j<arr.length-1-i;j++){ // 小循环,用于将数组中的某个元素与其它所有元素相比较 j的返范围是跟随 i的变化而变化的
var sum; // 先找一个空数组用来交换
if(arr[j]>arr[j+1]){ // 比较大小
sum = arr[j+1]; //交换改变位置
arr[j+1]=arr[j];
arr[j]=sum;
}
}
}
console.log(arr);
选择排序:取第一位和后面的所有做比较,拿到最小的放在第一位
//规律根据上面
for(var i=0;i<arr.length-1;i++){ //大循环,需要比对的次数
var ls = arr[i]; //假定一个最小值
var lsindex = i; //假定最小值的索引
for(var j =i+1;j<arr.length;j++){ //小循环,每次需要比对的次数
if(ls>arr[j]){ //交换给临时数组和索引
ls = arr[j];
lsindex = j;
}
}
arr[lsindex]= arr[i]; //再次交换
arr[i]=ls;
}
console.log(arr);
选择排序交换可以直接进行交换 只要理清思路找到循环规律和交换就可以了