冒泡排序
步骤:
1, 将列表倒序取值,两两比较,(前一位和后一位),如果前一位小于后一位,将两者置换
2,每交换一轮,即每轮的最小值被移到最首位,开始下一轮比较前,将比较值的下标前移
问题:
为什么要倒序两两比较?
回想第一个步骤,结果会将每一轮比较的最小值移动到首位,这样最终结果最小的数会跑到最前面,所以举一反三,正序也可以,不过是要将最大往后沉
为什么每一轮比较后下标要往前移?
因为每一轮比较后,这轮的最小值都会移动到最首位,第二轮已经没有比的需要,当然可以再比较,只是没有必要
优化
如果数据在比较一轮后已经排好序,但是按照原有的流程还是会继续比较下去,可以判断是否发生交换,如果没有发生交换,停止循环
想明白后,开始写
bubbleSort:function(){
var temp ; // 临时变量
var arr = [90,10,2,3,9,15];
for(var i = 0; i< arr.length; i++){
for(var j = arr.length - 1; j > i ; j--){
if(arr[j] < arr[j - 1]){
temp = arr[j];
arr[j] = arr[j-1];
arr[j-1] = temp;
}
}
}
console.log("临时变量",arr);
}
网友评论