您现在的位置是:首页 > 后台技术 > 数据结构与算法数据结构与算法

冒泡排序(图文)

第十三双眼睛2022-06-19【数据结构与算法】人已围观

简介冒泡排序

冒泡排序
冒泡排序的思想是:通过对待排序序列从前向后,依次比较相邻元素的值,若发现逆序则交换,使值较大的元素主键从前移动到后,就像水底下的气泡逐渐向上冒一样。
因为排序的过程中,各元素不断接近自己的位置,如果已让比较下来没有进行过交换,则说明已经有序了。因此要再排序过程中设置一个标志,判断元素是否进行过交换,
从而减少不必要的比较。
程序如下:
package com.xingchen.day005;
public class Sort {
    public static void main(String[] args) {
        int arr[] = {4,1,5,2,6,3,7};
        int temp = 0;
        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]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
        for(int i=0;i<arr.length;i++){
            System.out.printf("%d ",arr[i]);
        }
    }
}
测试结果如下:
7 6 5 4 3 2 1 
还可以设置一个变量,记录本轮比较是否进行过交换,如果没有,就说明已经排好序了,不需要再次比较。
程序如下:
package com.xingchen.day005;
public class Sort {
    public static void main(String[] args) {
        int arr[] = {1,2,3,4,5,6};
        int temp = 0;
        int count = 0;
        boolean flag = false;
        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]){
                    count ++;
                    flag = true;
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
            if(!flag){
                break;
            }
        }
        System.out.printf("一共比较了%d次",count);
        for(int i=0;i<arr.length;i++){
            System.out.printf("%d ",arr[i]);
        }
    }
}
测试结果如下:
一共比较了0次1 2 3 4 5 6 
可以看出,数组本来就是有序的,一共进行了0次比较

Tags:

很赞哦! ()

上一篇:递归(图文)

下一篇:选择排序法(图文)

文章评论

    共有条评论来说两句吧...

    用户名:

    验证码:

本站推荐

站点信息

  • 网站名称:JavaStudy
  • 建站时间:2019-1-14
  • 网站程序:帝国CMS7.5
  • 文章统计242篇文章
  • 标签管理标签云
  • 统计数据百度统计
  • 微信公众号:扫描二维码,关注我们