java中编写冒泡排序算法 bubbleSort(int[]arr)

2020-08-01 社会 76阅读
/** 
 *des:冒泡排序算法的一般性策略:搜索整个值列,比较相邻元素,如果两者的相对次序不对, 
 *则交换它们,其结果是最大值“想水泡一样”移动到值列的最后一个位置上, 
 *这也是它在最终完成排序的值列中合适的位置。 
 *然后再次搜索值列,将第二大的值移动至倒数第二个位置上,重复该过程,直至将所有元素移动到正确的位置上。 
 *2014-4-9-zbl 
 **/  
public class BubbleSort {  
  
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        Comparable []a={4,9,23,1,45,27,5,2};  
        bubbleSort1(a);  
          
        Comparable []b={4,9,23,1,45,27,5,2};  
        bubbleSort2(b);  
          
               int []c={4,9,23,1,45,27,5,2};  
        bubbleSort3(c);  
    }  
      
    public static void bubbleSort3(int []data)  
    {  
        int temp;  
        for (int i = 0; i < data.length; i++) {  
            int flag = 0;  
            for (int j = 0; j < data.length-i-1; j++) {  
                if (data[j]                    temp=data[j];  
                    data[j]=data[j+1];  
                    data[j+1]=temp;  
                    flag = 1;  
                }  
            }  
            if(flag==0)break;  
            System.out.print("第"+i+"遍:{");  
            for (int k = 0; k < data.length; k++) {  
                System.out.print(data[k]+",");  
            }  
            System.out.println("}");  
        }  
    }  
      
    public static void bubbleSort1(Comparable []data)  
    {  
        Comparable temp;  
        for (int position = data.length-1; position >=0; position--) {  
            int flag = 0;  
            for (int scan = 0; scan < position; scan++) {  
                if(data[scan].compareTo(data[scan+1])<0){  
                    temp = data[scan];  
                    data[scan] = data[scan+1];  
                    data[scan+1] = temp;  
                    flag = 1;  
                }  
            }  
            if (flag==0) {  
                break;  
            }  
            System.out.print("第"+position+"遍:{");  
            for (int i = 0; i < data.length; i++) {  
                System.out.print(data[i]+",");  
            }  
            System.out.println("}");  
        }  
    }  
      
    public static void bubbleSort2(Comparable []data)  
    {  
        Comparable temp;  
        for (int position = 0; position < data.length-1; position++) {  
            int flag = 0;  
            for (int scan = 0; scan < data.length-1-position; scan++) {  
                if(data[scan].compareTo(data[scan+1])<0){  
                    temp = data[scan];  
                    data[scan] = data[scan+1];  
                    data[scan+1] = temp;  
                    flag = 1;  
                }  
            }  
            if (flag==0) {  
                break;  
            }  
            System.out.print("第"+position+"遍:{");  
            for (int i = 0; i < data.length; i++) {  
                System.out.print(data[i]+",");  
            }  
            System.out.println("}");  
        }  
    }  
  
}
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com