冒泡排序

2019-02-22  本文已影响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;
        }
      }
    } 
上一篇 下一篇

猜你喜欢

热点阅读