氣泡排序以及優化

2021-09-12 21:00:58 字數 1378 閱讀 7738

排序

1. 穩定的排序演算法

2.不穩定的排序演算法

3.比較排序

元素之間的次序依賴它們之間的比較,每個數需要與其他數進行比較才能確定自己的位置。比較典型的比較排序有快速排序,歸併排序,堆排序,氣泡排序。

4非比較排序

非比較排序只要確定每個元素之前的已有元素個數即可,經過一次遍歷便可以解決。

排序

1.氣泡排序

比較相鄰的數字。如果第乙個比第二個大就交換它兩的位置,對每乙個相鄰元素都要進行比較,然後最大的就會在最後乙個位置,再重複進行上面的步驟就可以。

public class maopao1 ;

int i,j;

int temp=0;

int len=a.length;

for( i=0;ia[j+1])

}}

for(i=0;i執行結果為:

1,2,3,4,5,12,21,32,33,42,

其中從小到大的每一步迴圈的詳細步驟如下:

第一輪:2,1,3,4,5,21,32,12,33,42,

第二輪:1,2,3,4,5,21,12,32,33,42,

第三輪:1,2,3,4,5,12,21,32,33,42,

第四輪:1,2,3,4,5,12,21,32,33,42,

第五輪:1,2,3,4,5,12,21,32,33,42,

第六輪:1,2,3,4,5,12,21,32,33,42,

由上面的步驟可以看出在第三輪已經排好序,後面的排序已經沒有必要,所以可以改進**通過新增標誌位使時間複雜度更低。

public class maopao1 ;

int i,j;

int temp=0;

int len=a.length;

for( i=0;ia[j+1])

}for(j=0;j執行結果為:

2,1,3,4,5,21,32,12,33,42,

1,2,3,4,5,21,12,32,33,42,

1,2,3,4,5,12,21,32,33,42,

1,2,3,4,5,12,21,32,33,42,

****************************

1,2,3,4,5,12,21,32,33,42,

我在上面程式中輸出了每一次排序的結果和最後一次排序的結果(星號線下面),這樣可以更加清楚的看出改進版的程式在前三次排好序,在判斷第四次的排序時不滿足條件,跳出迴圈。

氣泡排序以及優化

氣泡排序是新手小白學的第乙個排序方法,複雜度很高。那麼如何在氣泡排序的基礎上對其進行優化?我們給一組資料 9,5,6,7,5,3 第一次冒泡 9和5交換位置 5,9,6,7,5,3 9和6交換位置 5,6,9,7,5,3 9和7交換位置 5,6,7,9,5,3 9和5交換位置 5,6,7,5,9,3...

氣泡排序以及優化

最近需要用到氣泡排序,所以翻出來研究一下。氣泡排序的基礎其實就是元素交換,是一種極其簡單的排序演算法。話不多說,直接上 1 include 2 void bubble sort int arr,int len 315 16 17 1819int main 20 22int len int sizeo...

氣泡排序以及氣泡排序的優化

很早接觸過氣泡排序法,但一直沒有真正的理解,只是為了記住而學習,今天又重新看了一下,其實氣泡排序法第一次排序會把最大的冒到最上面,第二次會把次大的泡冒到最大的後面,一次類推 另外在排序的次數上會逐漸減少。看 void bubble sort int a,int n 其實還可以優化一下,當發現沒有進行...