Java冒泡排序

Java冒泡排序,第1张

例如数组中有几个数据
12,4,5,78,90,1
排序:升序 : 1,4,5,12,78,90
 升序:谁大谁在右边

分析:


第一轮:12,4,5,78,90
第一次: 12 > 4? -》 如果左边的数据大于右边的:交换位置 -》 4,12,5,78,90,1
第二次: 12 > 5? ->交换位置 -》 4,5,12,78,90,1
第三次: 12 > 78? ->不用交换位置 -》 4,5,12,78,90,1
第四次:78 > 90? ->不用交换位置 -》 4,5,12,78,90,1
第五次:90>1? ->交换 -》 4,5,12,78,1,90
 经过第一轮的比较,确定科最大值 90,去到了最右边


第二轮: 4,5,12,78,1,90
第一次: 4>5? ->不用交换位置
第二次: 5 >12? ->不用交换位置
第三次: 12 > 78? ->不用交换位置
第四次:78 > 1? -》交换 4,5,12,1,78,90
每一轮的次都会减少一次,因为上一轮已经确定一个值,因此该轮就少比一次


第三轮:4,5,12,1,78,90
第一次: 4>5? ->不用交换位置
第二次: 5 >12? ->不用交换位置
第三次: 12 > 1? ->交换位置-> 4,5,1,12,78,90


第四轮:4,5,1,12,78,90
第一次: 4>5? ->不用交换位置
第二次: 5 >1? ->交换位置-》 4,1,5,12,78,90

第五轮: 4,1,5,12,78,90
第一次: 4>1? ->交换位置 -》 1,4,5,12,78,90

在重复比较 -》 循环
轮数-》外层 -》循环次数 -》 总数-1
总数:6个数据 -》5轮:因为最有一轮一次确定了两个

次数-》内层-》循环次数 -》总数-当前的轮数
1-》5
2-》4
3-》3
4-》2

代码:
 public static void main(String[] args) {
                 int[] nums = {12,4,5,78,90,1};
         //外层for控制轮数
         for (int i = 0; i < nums.length-1; i++) {
             //内层for控制次数
             for (int j = 0; j < nums.length-i-1; j++) {
                 //比大小
                 if (nums[j]>nums[j+1]) {
                     //做交换位置的中间数保存变量
                     int temp = 0;
                     temp = nums[j];
                     nums[j] = nums[j+1];
                     nums[j+1] = temp;
                 }
             }
         }
       //输出
        System.out.println(Arrays.toString(nums));
    }
 }

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/737128.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-28
下一篇 2022-04-28

发表评论

登录后才能评论

评论列表(0条)

保存