Java 冒泡排序與快速排序的實現
阿新 • • 發佈:2017-05-20
基於 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 冒泡排序與快速排序的實現