氣泡排序,快速排序
阿新 • • 發佈:2020-07-21
氣泡排序:
1) 實現的方式:重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,按照一個順序交換(可以從大到小,也可以從小到大),直到元素列排序完成。
2)名字的由來:因為越小的元素會經由交換慢慢“浮”到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名“氣泡排序”
3)圖解:
4)演算法分析:
時間複雜度
若檔案的初始狀態是正序的,一趟掃描即可完成排序。所需的關鍵字比較次數和記錄移動次數
均達到最小值:,。 所以,氣泡排序最好的時間複雜度為。 若初始檔案是反序的,需要進行趟排序。每趟排序要進行次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值:演算法穩定性
氣泡排序就是把小的元素往前調或者把大的元素往後調。比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。所以,如果兩個元素相等,是不會再交換的;
如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。
5)java的實現:publicstaticvoidbubbleSort(intarr[]){
for(inti=0;i<
arr.length-1
;i++){
for(int
j
=
0
;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
inttemp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
}
參考:https://baike.baidu.com/item/氣泡排序/4602306
快速排序演算法:
1. 快速排序(Quicksort)是對氣泡排序的一種改進。
2.由來:快速排序由C. A. R. Hoare在1960年提出。
它的基本思想是:通過一趟排序將要排序的資料分割成獨立的兩部分,其中一部分的所有資料都比另外一部分的所有資料都要小,然後再按此方法對這兩部分資料分別進行快速排序,整個排序過程可以public
static
int
[]qsort(
int
arr[],
int
start,
int
end){
int
pivot=arr[start];
int
i=start;
int
j=end;
while
(i<j){
while
((i<j)&&(arr[j]>pivot)){
j--;
}
while
((i<j)&&(arr[i]<pivot)){
i++;
}
if
((arr[i]==arr[j])&&(i<j)){
i++;
}
else
{
int
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
if
(i-
1
>start)arr=qsort(arr,start,i-
1
);
if
(j+
1
<end)arr=qsort(arr,j+
1
,end);
return
(arr);
}
public
static
void
main(String[]args){
int
arr[]=
new
int
[]{
3
,
3
,
3
,
7
,
9
,
122344
,
4656
,
34
,
34
,
4656
,
5
,
6
,
7
,
8
,
9
,
343
,
57765
,
23
,
12321
};
int
len=arr.length-
1
;
arr=qsort(arr,
0
,len);
for
(
int
i:arr){
System.out.print(i+
"\t"
);
}
}
來源:https://baike.baidu.com/item/快速排序演算法/369842?fr=kg_qa