倒序排序 3分鐘了解氣泡排序 一看就懂

2021-10-25 12:38:34 字數 2869 閱讀 3910

先上張圖

直接上案例

氣泡排序的大致流程:

依次比較相鄰的兩個數,正序則不動,倒序則交換位置,如此迴圈,直到整個陣列為有序為止

以下列資料為例:

首先比較索引為0和1的值

3>2,為倒序

則進行位置交換

再比較索引為1和2的值

3<7,為正序

位置不變

再比較索引為2和3的值

7>4,為倒序

則進行位置交換

再比較索引為3和4的值

7>1,為倒序

則進行位置交換

此時已經遍歷到最後一位(length-1),第一輪位置交換結束

第一輪總結:

href="">1. 由於是依次比較並交換數值,當前陣列中最大的值已經被放到最後的位置

2.那麼接下來的排序則不需要遍歷到最後一位,因為最大的1個值已經被排到了最後

陣列中的最大值已經被放到了最後,那麼第二輪比較則可以無視最後一位,比較前面的數值(length-1-1)即可

重複第一輪的操作

首先比較索引為0和1的值

2<3,為正序

位置不變

再比較索引為1和2的值

3<4,為正序

位置不變

再比較索引為2和3的值

4>1,為倒序

則進行位置交換

此時已經遍歷」7」之前的數(leng-1-1),第二輪結束

第二輪總結:

1.由於不考慮已經排序好的7,第二輪已經將除最後一位之前(leng-1-1)的陣列中最大值交換到了最後位置

2.那麼接下來的排序則不需要遍歷到最後2位,因為最大的2個值已經被排到了最後

陣列中的最大值兩個值已經被放到了最後,那麼第三輪比較則可以無視最後兩位,比較前面的數值(leng-1-2)即可

重複第一輪的操作

首先比較索引為0和1的值

2<3,為正序

位置不變

再比較索引為1和2的值

3>1,為倒序

則進行位置交換

此時已經遍歷」4」和」7」之前的數(leng-1-2),第二輪結束

第三輪總結:

1.由於不考慮已經排序好的4和7,第三輪已經將除最後兩位之前(leng-1-2)的陣列中最大值交換到了最後位置

2.那麼接下來的排序則不需要遍歷到最後3位,因為最大的3個值已經被排到了最後

陣列中的最大值三個值已經被放到了最後,那麼第四輪比較則可以無視最後三位,比較前面的數值(leng-1-3)即可

重複第一輪的操作

首先比較索引為0和1的值

2>1,為倒序

則進行位置交換

此時已經遍歷」3」和」4」和」7」之前的數(leng-1-3),最後一輪結束

第四輪(最後一輪)總結:

1.由於不考慮已經排序好的3和4和7,第四輪已經將除最後三位之前(leng-1-3)的陣列中最大值交換到了最後位置

2.此時遍歷完畢,陣列已經為有序陣列

public class sort ;

system.out.println("====before====");

system.out.println(arrays.tostring(arr));

//進行排序

bubblesort(arr);

//展示結果

system.out.println("====after====");

system.out.println(arrays.tostring(arr));

}//氣泡排序

public static void bubblesort(int arr)}}

}}

從第乙個位置開始遍歷整個陣列,使用巢狀迴圈

外層表示排序的次數,有n個數則只需要n-1次即可

內層迴圈則是把當前數值和後一位數值作比較,當前數值比後一位數值大(倒序),則進行交換位置

這樣一來,內層迴圈走一遍,則是把當前比較的陣列的最大值放到最後位置

外層迴圈走完則是排序完所有數字

3分鐘學會氣泡排序

思路 兩個元素比較,大的放到右邊 從頭開始依次比較相鄰的兩個元素,目的是找出最大的乙個元素放到末尾,這個元素不再參與比較 第二次仍然從頭開始,把第二大的元素放到正確的位置 一共比較 len 1 趟,因為已經確定了 len 1 個元素的位置,那麼第 n 個肯定是最小的那個了 第 i 趟的比較次數為 l...

30分鐘掌握 氣泡排序

演算法步驟 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。針對所有的元素重複以上的步驟,除了最後乙個。持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。我的理解 氣泡排序在整個...

一看就懂的氣泡排序

不用走啦,看得懂的啦!相鄰兩個數比較大小,較大的下沉 較小的上浮。從第乙個數開始,比較第乙個數和第二個數大小,如果第乙個數比第二個數大,則交換兩個數的位置,使大的數排在後面,依次比較第二個數和第三個數,使第三個數比第二和第乙個數大,直到倒數兩個數,將最大的數移動到最後一位。演算法分為兩個迴圈 1.外...