数组的冒泡排序
2018-02-28 11:50
113 查看
<script> // var ary = [4,3,5,2,1]; //冒泡排序的思想:让当前项与后一项进行比较,如果当前项大于后一项,两者交换位置 //第一轮比较: //拿出数组的第一项4与后一项3比较,4>3,交换位置[3,4,5,2,1] //4<5 不交换位置[3,4,5,2,1] //5>2 交换位置[3,4,2,5,1] //5>1 交换位置[3,4,2,1,5] //虽然没有实现最后的目标,但是已经把数组中当前最大的那个值5已经放到数组的末尾位置了 //第一轮比较了四次,一共5个数,不用和自己比,最多比四次 //第二轮比较: //3<4 不交换位置 //4>2 交换位置[3,2,4,1,5] //4>1 交换位置[3,2,1,4,5] //也没有实现最后的目标,但是把剩余项中最大的那个4放在倒数第二位了 //第二轮比较了三次,首先不用和自己比,最多四次,但是第一轮我们已经把最大的一个数放到末尾了,不需要再和末尾的5比了 //第三轮比较: //3>2 交换位置[2,3,1,4,5] //3>1 交换位置[2,1,3,4,5] //第三轮比较了两次,首先不用和自己比,最多四次,但是第一轮第二轮我们已经把最大的俩个数放到了末尾,不需要再和4/5比了 //第四轮比较: //2>1 交换位置[1,2,3,4,5] //每一轮当前项和后一项俩俩比较的话,虽然不一定达到最后的目标结果,但是已经把当前最大的那个值放在后面了->数组一共有5项,我只需要比较4轮,把四个最大值分别放到末尾,就实现了排序,一共最多需要比较多少轮ary.length-1 // i 轮数:i-0;i<ary.length-1; // j 代表每一轮比较的次数 //两者交换位置 // var a = 12; // var b = 13; // var c = null; // c = a; // a = b; // b = c; // var a = 13; // var b = 15; // a = a+b; //28 // b = a-b; //13 // a = a-b; //15 // function bubbleSort(ary) { // var temp = null; // for(var i = 0;i < ary.length - 1; i++ ){ // for (var j = 0;j < ary.length - 1 - i ; j++) {//j每一轮比较的次数 // if (ary[j] > ary[j+1]) { // temp = ary[j]; // ary[j] = ary[j+1]; // ary[j+1] = temp; // } // } // } // return ary; // } // var ary = [4, 3, 5, 1, 2]; // var res = bubbleSort(ary); // console.log(res); //优化 //当flag=false时,退出循环 function bubbleSort(ary) { var flag = false; for(var i = 0;i<ary.length-1;i++){ for(var j = 0;j<ary.length-1-i;j++){ if (ary[j]>ary[j+1]) { ary[j] = ary[j]+ary[j+1]; ary[j+1] = ary[j]-ary[j+1]; ary[j] = ary[j] - ary[j+1]; flag = true; } } if (flag) { flag = false; }else{ break; } } return ary } var ary = [2, 1, 3, 5, 6]; var res = bubbleSort(ary); console.log(res); </script>
相关文章推荐
- 编写冒泡排序,排序一个整形数组
- 冒泡排序:在随机产生的数组中查找最值,实现数组的排序
- java基础(数组)之冒泡排序
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- java数组排序示例(冒泡排序、快速排序、希尔排序、选择排序)
- 字符串数组的冒泡排序,从小到大
- 第十三周项目四数组的排序冒泡排序
- java 冒泡排序 函数调用(数组传递)
- XX大型游戏公司笔试题之一 【 C++(揭秘很牛XX游戏公司的现 笔试题)整型随机数组奇偶排序(奇数从小到大,偶数从大到小)冒泡排序】
- 长度为7的数组,冒泡排序.
- 例题:青歌赛打分程序。去掉两个最高分,去掉两个最低分,再算平均分。主要学习数组和冒泡排序,什么情况下要定义数组
- 03_java数组和冒泡排序
- 【C++】随机生成数组->冒泡排序->二分查找
- 数组的冒泡排序
- java数组冒泡排序
- 数组的冒泡排序
- c+两种简单的数组排序,冒泡排序和类似选择排序的思考
- C#第1次试验(4)设计一个程序,输入10个数存入数组中,然后实现冒泡排序
- 冒泡排序--通过冒泡算法让数组中最大的值成为数组中最后一个值
- 回调函数应用(冒泡排序 既排整型数组 也可排字符串 )