氣泡排序的演算法原理,什麼是氣泡排序演算法

時間 2022-04-08 02:51:35

1樓:銷

氣泡排序第一次把最大的數放到最後

第二次把次大的放到倒數第二個位置

以此類推

實現方式是從左到右,每次把相鄰兩個數中較大的放在右邊,一直到最後,最大的數就在最右了,剩下的以此類推

比如 3 1 5 4 2

3 1中3大,放到右面是1 3 5 4 2然後3 5比5大,不動

然後5 4比5大,交換變成3 1 4 5 25 2比5大,交換就是3 1 4 2 5

然後前四個數也如此做

3 1中3大

交換變成 1 3 4 2 5

3 4 比,4大,不動

4 2比,4大,交換變成 1 3 2 4 5然後以此類推,排序完成

2樓:歪有小愛

氣泡排序演算法的運作如下:(從後往前) 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。 針對所有的元素重複以上的步驟,除了最後乙個。

持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

什麼是氣泡排序演算法

3樓:縱橫豎屏

氣泡排序演算法:重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。

這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(公升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」。

4樓:車芊力文曜

基本思路:對尚未排序的各元素從頭到尾依次比較相鄰的兩個元素是否逆序(與欲排順序相反),若逆序就交換這兩元素,經過第一輪比較排序後便可把最大(或最小)的元素排好,然後再用同樣的方法把剩下的元素逐個進行比較,就得到了你所要的順序。可以看出如果有

n個元素,那麼一共要進行

n-1輪比較,第

i輪要進行

j=n-i

次比較。

我也不知道你說的是用哪種語言編寫:就列出了如下幾種,希望你能滿意#include

void

main()

}printf("排序結果:");

for(i=

0;i<

10;i++)

//依次輸出排序結果

printf("%d\t",a[

i]);

printf("\n");

}pascal為例子

procedure

bubble_sort(var

l:list);

vari,j:position;

begin

fori:=first(l)

tolast(l)-1

dofor

j:=first(l)

tolast(l)-i

doif

l[j]>l[j+1]

then

4swap(l[j],l[j+1]);

//交換l[j]和l[j+1]

end;

下面使用c++語言編寫

#include

void

main()

{int

a[n],i,j,temp;

cout<<"請輸入數字:"<>a;

//依次輸入n個整數

for(i=0;i

a(i+

1))then

'若是遞減,改為a(i)

temp

=a(i)

a(i)

=a(i+1)

a(i+1)=

temp

endif

next

foreachcin

aprint

c;next

endsub

5樓:七歲一枯榮

起泡排序,別名「氣泡排序」,該演算法的核心思想是將無序表中的所有記錄,通過兩兩比較關鍵字,得出公升序序列或者降序序列。

6樓:機靚歸方雅

#include

#define

max_n

1024

/*儲存大小為1024*/

void

bubsort(int

a,int

n)/*氣泡排序*/

}int

main(void)

7樓:務知北世敏

從小到大的排序

class

program}}

}static

void

main(string

args)

;sort(myarray);

for(intm=

0;m<

myarray.length;

m++)

}從大到小的排序

class

program}}

}static

void

main(string

args)

;sort(myarray);

for(intm=

0;m<

myarray.length;

m++)}

誰能講一下氣泡排序原理?

8樓:假面

氣泡排序演算法的原理如下:

1.比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。

2.對每一對相鄰元素做同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。

3.針對所有的元素重複以上的步驟,除了最後乙個。

4.持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。

9樓:

『簡單的來說(不高興長篇大論了)

『就是兩兩比較,小的靠右

『從前往後,從後往前

『重複n次後就排好序了。。。(就像冒氣泡一樣將小數「冒」上來,故曰冒泡法)

有關氣泡排序演算法的基本思想是什麼?

10樓:吶誰ni在**

該程式為:

#include

void main()

printf("排序後的結果:");

for(i=0;i<8;i++)

printf("%d \n",a[i]);

}第一趟:57 78 80 27 32 90 45 100

第二趟:57 78 27 32 80 45 90 100

第三趟:57 27 32 78 45 80 90 100

第四趟:27 32 57 45 78 80 90 100

氣泡排序演算法的時間複雜度是什麼?

11樓:zanier科技

初始bai狀態是正序的,du一趟掃瞄即可完成排序,zhi所需的關鍵字比dao較次數和記錄移動

版次數均達到最小值:權

氣泡排序就是把小的元素往前調或者把大的元素往後調,比較是相鄰的兩個元素比較,交換也發生在這兩個元素之間。

所以,如果兩個元素相等,是不會再交換的;如果兩個相等的元素沒有相鄰,那麼即使通過前面的兩兩交換把兩個相鄰起來,這時候也不會交換,所以相同元素的前後順序並沒有改變,所以氣泡排序是一種穩定排序演算法。

12樓:寒廷謙顧子

氣泡排序的演算法

抄時間複雜度

襲上o(n^2

)氣泡排序是這樣實現的:

首先將所有待排序的數字放入工作列表中。

從列表的第乙個數字到倒數第二個數字,逐個檢查:若某一位上的數字大於他的下一位,則將它與它的下一位交換。

重複2號步驟,直至再也不能交換。

氣泡排序的平均時間複雜度與插入排序相同,也是平方級的,但也是非常容易實現的演算法。

選擇排序

選擇排序是這樣實現的:

設陣列內存放了n個待排數字,陣列下標從1開始,到n結束。

i=1從陣列的第i個元素開始到第n個元素,尋找最小的元素。

將上一步找到的最小元素和第i位元素交換。

如果i=n-1演算法結束,否則回到第3步

選擇排序的平均時間複雜度也是o(n^2)的。

13樓:匿名使用者

o(n^2),可以通過程式來驗證

小於10000個資料的陣列用它不會超時(大概一秒)

但如果更大就要用快排或歸併o(n*log2(n))

14樓:黑綠藍

最好情況o(n)

最壞情況o(n^2)

平均情況o(n^2)

編寫乙個雙向氣泡排序演算法是什麼?

15樓:淋漆魚

思維方法:求和取平均值,然後從中間開始向兩邊比較排序。

演算法思想簡單描述:

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

演算法:/*

功能:氣泡排序

輸入:陣列名稱(也就是陣列首位址)、陣列中元素個數*/void bubble_sort(int *x, int n)}}}

什麼是氣泡排序法,什麼是氣泡排序演算法

氣泡排序 英語 bubble sort 是一種簡單的排序演算法。它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個演算法的名字由來是因為越小的元素會經由交換慢慢 浮 到數列的頂端。氣泡排序對...

彙編氣泡排序演算法求助

老實說,沒看懂你的程式,這是我的冒泡程式,從大到小排列dseg segment a dw 90,27,102,37,56,33,54,223,33,24,93,12,65,78 dseg ends cseg segment assume cs cseg,ds dsegstart mov ax,dse...

怎麼解釋氣泡排序,氣泡排序法C語言解釋。

若有n個數字,從第乙個與後邊的開始比較,大的放後邊。一直比較到最後乙個數,那麼最後就是最大的。剩餘n 1個數再次這樣比較,直到n個迴圈。數列就是從小到大了。個人理解就是把資料看成泡泡,資料的大小看錯泡泡的重量之類的!反正就是乙個能比較的屬性。然後通過相鄰位置比較,根據比較結果交換位置,直到排好序為止...

用氣泡排序法對陣列排序,用氣泡排序法對乙個陣列排序

include define n 15 int main i,j,t 陣列已有n個資料for i 0 ia j 1 若相信的元素大小順序不對,就交換 for i 0 i printf n return 0 main printf the sorted numbers n for i 0 i 10 i...

氣泡排序法沒看懂

寫幾個無序的數字,按照程式一步一步來,你就知道了,而且印象深刻,絕對忘不了!那個大小比較是說,如果前乙個數比後乙個小,則交換位置 假設有n個數 n就是上邊程式中的arr.length 第一次氣泡排序 這時候i 0 最大的數就排在了最後。所以第二次 這時候i 1 排序的時候就從第乙個開始比較到倒數第二...