美文网首页
冒泡排序

冒泡排序

作者: 发条与小小 | 来源:发表于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