美文网首页
冒泡排序(ios和前端script)

冒泡排序(ios和前端script)

作者: flowerflower | 来源:发表于2017-08-17 11:12 被阅读56次

    ios之冒泡排序

    未优化之前

      NSMutableArray *arr = [NSMutableArray arrayWithObjects:@12,@144,@14,@50,@58,@27,@65, nil];
        int x = 0,y = 0;
         //循环控制比较次数
        for (int i = 0; i<arr.count-1; i++) {
             //两两比较
             for (int j = 0; j<arr.count-1; j++) {
               //交换位置
                 if (arr[j]>arr[j+1]) {
                     id temp = arr[j];
                     arr[j] = arr[j+1];
                     arr[j+1] = temp;
                 }
                 x++;  //记录内循环的次数
            }
            y++; //记录外循环的次数
        }
        NSLog(@"记录内循环的次数%zd",x); //36
        NSLog(@"记录外循环的次数%zd",y); //6
        NSLog(@"%@",arr);
    
    Snip20170817_1.png

    优化之后

       NSMutableArray *arr = [NSMutableArray arrayWithObjects:@12,@144,@14,@50,@58,@27,@65, nil];
        int x = 0,y = 0;
        //循环控制比较次数
        for (int i = 0; i<arr.count-1; i++) {
            //为什么issort = true,不能写在循环外面
            //因为交换位置isSort = false,isSort的值永远是false,我们要检测的是某一趟是否交换位置
            BOOL isSort = true; //假设排序ok
            //两两比较
            for (int j = 0; j<arr.count-1; j++) {
                //交换位置
                //如果交换位置,说明没有排序好,如果不交换位置,说明已经排序好
                if (arr[j]>arr[j+1]) {
                    isSort = false; //没有排序好
                    id temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    
                }
                x++;  //记录内循环的次数
            }
            y++; //记录外循环的次数
            if (isSort) {//如果排序好了
                
                break;
            }
            
        }
        NSLog(@"记录内循环的次数%zd",x); //36   18
        NSLog(@"记录外循环的次数%zd",y); //6    4
        NSLog(@"%@",arr);
    
    
    Snip20170817_3.png

    前端冒泡排序(与上同理)

    方式一:

         var array = [12,144,14,50,58,27,65];
                  var x = 0;
                  var y = 0;
                   //循环控制比较次数
                   for(var i = 0;i< array.length-1;i++){
                       //两两比较
                       for(var j =0; j < array.length-1; j++){
                           //交换位置
                           if (array[j]> array[j+1]){
                               var tmp = array[j];
                               array[j] = array[j+1];
                               array[j+1] = tmp;
                           }
                           x++; //记录内循环的次数
                       }
                       y++; //记录外循环的次数
                   }
                  console.log("记录内循环的次数"+x);
                  console.log("记录外循环的次数"+y); 
                  console.log(array);  
    

    方式二:

    var array = [12,144,14,50,58,27,65];
                  var x = 0;
                  var y = 0;
                  //循环控制比较次数
                  for(var i = 0;i< array.length-1;i++){
               //为什么issort = true,不能写在循环外面
                      //因为交换位置isSort = false,isSort的值永远是false,我们要检测的是某一趟是否交换位置
                      var isSort = true; //假设排序ok
                      //两两比较的次数   1--6  2--5 。。。。
                      for(var j =0; j < array.length-1- i; j++){
                          //如果交换位置,说明没有排序好,如果不交换位置,说明已经排序好
                          if (array[j]> array[j+1]){
                              isSort = false; //没有排序好
                              var tmp = array[j];
                              array[j] = array[j+1];
                              array[j+1] = tmp;
                          }
                          x++; //记录内循环的次数
                      }
                      y++; //记录外循环的次数
                      if (isSort){
                          //如果排序好了
                          break;
                      }
                  }
                  console.log("记录内循环的次数"+x);
                  console.log("记录外循环的次数"+y);
                  console.log(array); 
    
    Snip20170817_4.png

    相关文章

      网友评论

          本文标题:冒泡排序(ios和前端script)

          本文链接:https://www.haomeiwen.com/subject/hxugrxtx.html