冒泡排序

原理:比较两个相邻的元素,将值大的元素交换至右端。
举个简单栗子来说明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;
        }
      }
    } 
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容