冒泡排序

ぐ巨炮叔叔 提交于 2019-12-01 05:05:47

冒泡排序

思路

1.依次对数组中每对相邻的元素比对,如果前者比后者大,那么它们就交换位置,这样一趟下来总能把一个最大元素送到末尾的位置
2.可以这么说,每一趟排序进行之后使得数组后面的有序部分规模在增大,前面的无序部分规模在减小
3.经过这样多次交换之后数组就有序了

代码

package sort;

public class BubbleSort {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        int [] a= {6,-1,3,-3,2,9,1,2,3};
        bubblesort(a);
        for(int i=0;i<a.length;i++) {
            System.out.printf("%d ",a[i]);
        }
        System.out.println();
    }
    
    //冒泡排序
    public static void bubblesort(int[] arr) {
        int len=arr.length;
        int temp;
        boolean flag=false;//表示是否交换过
        for(int i=0;i<len;i++) {
            for(int j=0;j<len-i-1;j++) {
                if(arr[j]>arr[j+1]) {
                    temp=arr[j];
                    arr[j]=arr[j+1];
                    arr[j+1]=temp;
                    flag=true;
                }
            }
            if(!flag) {//如果一趟一次都没有交换过直接退出
                break;
            }else {
                flag=false;//重置false下一轮判断
            }
        }
    }

}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!