美文网首页
冒泡排序

冒泡排序

作者: 发条与小小 | 来源:发表于2019-02-22 15:08 被阅读0次

    原理:比较两个相邻的元素,将值大的元素交换至右端。
    举个简单栗子来说明int[] arr={6,3,4,9,1,2};


    第一趟排序:
    比较6和3,交换位置 3,6,4,9,1,2
    比较6和4,交换位置 3,4,6,9,1,2
    比较6和9,不交换位置 3,4,6,9,1,2
    比较9和1,交换位置 3,4,6,1,9,2
    比价9和2,交换位置 3,4,6,1,2,9


    第二趟排序:
    比较3和4,不交换位置 3,4,6,1,2,9
    比较4和6,不交换位置 3,4,6,1,2,9
    比价6和1,交换位置 3,4,1,6,2,9
    比价6和2,交换位置 3,4,1,2,6,9


    第三趟排序:
    比较3和4,不交换位置 3,4,1,2,6,9
    比较4和1,交换位置 3,1,4,2,6,9
    比价4和2,交换位置 3,1,2,4,6,9


    第四趟排序:
    比较3和1,交换位置 1,3,2,4,6,9
    比较3和2,交换位置 1,2,3,4,6,9


    第五趟排序:
    比较1和2,不交换位置 1,2,3,4,6,9

    按照图上的顺序就是N个数字需要(N-1)次排序 每i趟去排序是(N-i)次比较
    所以嵌套的循环就是

    for(int i=1;i<arr.length;i++){
    
        for(int j=1;j<arr.length-i;j++){
    
        //交换位置
        }
    } 
    

    所以最终的排序方法可以这么写

     for(int i=0;i<arr.length-1;i++){//外层循环控制排序趟数
          for(int j=0;j<arr.length-1-i;j++){//内层循环控制每一趟排序多少次
            if(arr[j]>arr[j+1]){
              int temp=arr[j];
              arr[j]=arr[j+1];
              arr[j+1]=temp;
            }
          }
        } 
    

    相关文章

      网友评论

          本文标题:冒泡排序

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