08 JavaScript基础之--冒泡排序
来源:互联网 发布:数据库性能测试 编辑:程序博客网 时间:2024/05/24 07:41
需求:冒泡排序
思路:写两个for循环,外循环控制轮数,内循环控制次数。看相邻两个元素是否遵循某一规则,如果遵循就交换位置。
排序:
- 从小到大排序:前面比后面大,交换位置。
- 从大到小排序:后面比前面大,就交换位置。
步骤:
- 外循环控制轮数(for),轮数为数据个数-1轮;
- 内循环控制次数(for),次数为数据个数-1次;
- 从小到大:如果前面比后面大,交换位置。
冒泡程序初级版:
var arr = [7,6,5,4,3,2,1]; //1.外循环控制轮数(for),轮数为数据个数-1轮; for(var i=0;i<arr.length-1;i++){ //2.内循环控制次数(for),次数为数据个数-1次; for(var j=0;j<arr.length-1;j++){ //3.从小到大:如果前面比后面大,交换位置。 if(arr[j] > arr[j+1]){ //交换位置。 var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } } } console.log(arr);
冒泡程序中级版:(进行了比较次数的优化)
var arr = [4,3,7,6,5,2,1];//轮数var m = 0;//次数var n = 0;//1.外循环控制轮数(for),轮数为数据个数-1轮;for(var i=0;i<arr.length-1;i++){//2.内循环控制次数(for),次数为数据个数-1次; //每比较一轮少比较一次。因为每轮找出一个最大的 //而第一轮不能少比较所以用i,第一次为0,然后一次递增。 for(var j=0;j<arr.length-1-i;j++){ //3.从小到大:如果前面比后面大,交换位置。 if(arr[j] > arr[j+1]){ //交换位置。 var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; } n++; } m++;}console.log(arr);console.log(m);console.log(n);
冒泡排序终极版: (优化轮数)
如果整轮比较一次前后位置都没有交换过,那么跳出外循环(跳出轮循环)。
var arr = [1,2,3,4,5,6,7];////轮数var m = 0;//次数var n = 0;//1.外循环控制轮数(for),轮数为数据个数-1轮;for(var i=0;i<arr.length-1;i++){ //开闭原则 var bool = true; //2.内循环控制次数(for),次数为数据个数-1次; //优化轮数:如果整轮比较一次前后位置都没有交换过,那么跳出外循环(跳出轮循环)。 for(var j=0;j<arr.length-1-i;j++){ //3.从小到大:如果前面比后面大,交换位置。 if(arr[j] > arr[j+1]){ //交换位置。 var temp = arr[j]; arr[j] = arr[j+1]; arr[j+1] = temp; //没有排序完毕。(因为前后交换位置了,不确定下次是否还要交换位置。) bool = false; } n++; } m++; //如果是false,只能证明你本轮交换了位置。不能确定下一轮是否交换位置。所以,不能跳出外循环。 //如果是true,说明本轮循环没有一对元素相互交换位置。(已经排序完毕,直接跳出) if(bool === true){ break; }}console.log(arr);console.log(m);console.log(n);
0 0
- 08 JavaScript基础之--冒泡排序
- javascript之冒泡排序算法
- JavaScript之冒泡法排序
- java基础之冒泡排序
- 基础之冒泡排序法
- java基础之冒泡排序
- 基础算法之冒泡排序
- 算法基础之冒泡排序
- 算法基础之冒泡排序
- C#基础之冒泡排序
- JavaEE基础之冒泡排序
- 基础算法之 冒泡排序
- 算法基础之排序篇-冒泡排序
- 基础算法之排序(1)--冒泡排序
- 基础算法--排序: 之冒泡排序
- java基础之----选择排序 冒泡排序
- java基础之----选择排序 冒泡排序
- 【8086汇编】基础排序之冒泡排序
- in操作符检查属性
- HDU 2090
- Android SQLite是线程安全的吗?
- [C]m*n矩阵划分成k*j等份
- Intent(二)隐式调用intent
- 08 JavaScript基础之--冒泡排序
- Java学习笔记--类与对象
- 【Hacker Rank】01.Say "Hello, World!" With Python
- Flask返回二进制图片
- 一些JAVA-Swing-JFream常用到的功能
- HDU 2089
- 从最大似然到EM算法浅解
- Mac操作系统下重装 Mac os X 系统
- 构建用户画像: 5W2H方法(三)