1. 程式人生 > >Java 冒泡排序與快速排序的實現

Java 冒泡排序與快速排序的實現

基於 amp 可能 ava 放置 jpg end images ati

冒泡排序

    基本特點

      (1)基於交換思想的排序算法
      (2)從一端開始,逐個比較相鄰的兩個元素,發現倒序即交換。
     (3)一次遍歷,一定能將其中最大(小)的元素交換到其最終位置上

    排序過程模擬

    技術分享

    代碼實現

static void Bubble_Sort(int array[]){
        for(int i=0;i<array.length;i++)
        {
            for(int j=0;j<array.length-i-1;j++)
            {
                if(array[j]<array[j+1])
                {
                    int temp=array[j];
                    array[j]=array[j+1];
                    array[j+1]=temp;
                }
            }
            System.out.print("第"+(i+1)+"次排序的結果:");
            for(int c=0;c<array.length;c++)
            {
                System.out.print(array[c]+"\t");
            }
            System.out.println();
        }
        
    
        System.out.print("最終排序結果:");
        for(int c=0;c<array.length;c++){
            System.out.print(array[c]+"\t");
        }
    }

       

快速排序

  基本思想

     選定一個元素作為中間元素,然後將表中所有元素與改中間元 素相比較,將表中比中間元素小的元素調到表的前面,將比中間元素大的元素 調到後面,再將中間元素放在

     這兩部分之間以作為分界點,這樣便得到一個劃分。 然後再對左右兩部分分別進行快速排序,直到每個子表僅有一個元素或為空表為止。

  劃分方法

     1.中間元素的選擇:作為參考點的中間數的選擇沒有特別的規定, 本次默認為第一個元素。

     2.中間元素所占空間可能被其他元素占用,為此,可先保存該元素的值到其他位置以騰出起空間。

     3.這樣,前面便有一個空位置(i),可從最後面開始往前搜索一個比中間數大的元素,並將其放置到後面的這個位置上。

4.此刻,後面便有了一個空位置(j),可從前面開始往後搜索一個比中間數小的元素,並將其放置到前面的位置。4.重復1 2 ,直到兩邊搜索的空位重合(i=j)。

  排序過程模擬

     技術分享

  代碼實現

static int partition(int array[],int start,int end){
        int temp=array[start];
        int i=start;
        int j=end-1;
        while(i!=j){
            while(i<j&&array[j]>temp){
                j
--; } if(i<j){ array[i]=array[j]; i++; } while(i<j&&array[i]<temp){ i++; } if(i<j){ array[j]=array[i]; j--; } } array[i]=temp; return i; } static void QuickSort(int a[],int s,int e){ if(s<e){ int i=partition(a, s, e ); QuickSort(a, s,i-1); QuickSort(a, i+1, e); } }

     

     

Java 冒泡排序與快速排序的實現