冒泡排序算法

package test2;

import java.util.Arrays;

public class BubbleSort {
    //相邻位置的值比较,把大的放在后面
    //最多进行n-1次排序,每次排序最多n-i次比较,因此sort方法会造成多余操作
    public void sort(int[] n) {
        //第一个for循环表示第几次循环
        for(int i=1;i<n.length;i++) {
        //第二个for循环表示该次循环进行几次比较
            for(int j=0;j<n.length-i;j++) {
                        //判断比较是否进行换位
                if(n[j]>n[j+1]) {
                    int temp = n[j];
                        n[j] = n[j+1];
                        n[j+1] = temp;
                        }
                }
            
                System.out.print("第"+i + "次: ");
                Arrays.asList(n).stream().forEach(x->{
                    for(Integer k:x){
                        System.out.print(k+"\t");
                    }
                    System.out.println();
                    ;});
            }
        }
    //增加标志位,不会在循环完成进行多余循环。
    public void sort2(int[] n) {
        //第一个for循环表示第几次循环
        for(int i=1;i<n.length;i++) {
        //第二个for循环表示该次循环进行几次比较
            int comFg=0;
            for(int j=0;j<n.length-i;j++) {
                        //判断比较是否进行换位
                if(n[j]>n[j+1]) {
                    int temp = n[j];
                        n[j] = n[j+1];
                        n[j+1] = temp;
                        comFg+=1;
                }
            }
            
                System.out.print("第"+i + "次: ");
                Arrays.asList(n).stream().forEach(x->{
                    for(Integer k:x){
                        System.out.print(k+"\t");
                    }
                    System.out.println();
                    ;});
                if(comFg<2){
                    break;
                }
            }
        }
            
            public static void main(String[] args) {
                BubbleSort s = new BubbleSort();
//                int[] n = {1,17,3,6,15,2,56,13};
                int[] array1 = {11,9,8,7,16,5,4,1,22};
                int[] array2=Arrays.copyOf(array1, 9);
                s.sort(array1);
                
                //sort2排序
                System.out.println("----------sort2排序------------");
                s.sort2(array2);
//                s.print(n);
            }
        }    

posted @ 2019-11-15 09:50  纵马天涯  阅读(137)  评论(0)    收藏  举报