八大排序 氣泡排序

2021-10-08 06:37:03 字數 1232 閱讀 6230

原理:每次比較兩個數值,然後將數值大的交換到右邊。

本人理解:迴圈陣列長度的次數,每次迴圈,都會將當前剩下的,還未排好序的數值中最大的值,放到當前未排好序的數值的最右邊,即下標為(陣列的長度-當前迴圈的次數);(當前迴圈的次數 = i + 1);下標是由0開始,所以下標值要加1才等於迴圈次數

(注釋:減當前迴圈的次數,是因為之前的迴圈,已經將之前迴圈中最大的值排好了序,所以為了不影響已經排好序的數值,要減去已經迴圈的次數;)

比如:第一次排序,陣列長度為6,迴圈次數為1,則在這次排序中,最大值所處的下標應該是(6 - 1),即arr[5]; 在**中就是(6 - 0 - 1),因為下標是由0開始,所以要再減1

第二次排序,陣列長度為6,迴圈次數為2,最大值所處下標為(6 - 1 - 1);依次類推,形成以下**

public

static

void

main

(string[

] args)

;for

(int i =

0; i < arr.length; i++)}

system.err.

println

("i="

+ i +

" ==> "

+ arrays.

tostring

(arr));

}}

最後優化版:

當遇到已經排好序,但是還沒有迴圈完的情況,就可以加個標識判斷一下,判斷當前這一次迴圈有沒有更改排序,如果沒有,就代表已經排好序,就可以直接用break結束迴圈;

能優化一點是一點!

八大排序演算法 氣泡排序

在要排序的一組數中,對當前還未排好序的範圍內的全部數,自上而下對相鄰的兩個數依次進行比較和調整,讓較大的數往下沉,較小的往上冒。即 每當兩相鄰的數比較後發現它們的排序與排序要求相反時,就將它們互換。include include 常規氣泡排序 void bubblesort int r,int n ...

八大排序之氣泡排序

氣泡排序,穩定,平均與最壞時間複雜度為o n 2 最好為o n 空間複雜度為o 1 include using namespace std void bubblesort int numbers,const int length int main int length 0 cin length fo...

八大排序之氣泡排序

1 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。2 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大的數。3 針對所有的元素重複以上的步驟,除了最後乙個。4 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。1.不管原始陣列是否...