1樓:獨夏申屠香露
氣泡排序★★★★★★
#include
#definen5
void
main()
//迴圈結束
for(i=0;i //開始外層for迴圈,從i=0,每次加1,直到i=4//從此便完成大小變數的交換,使得大值往前放}//結束內層迴圈 }//結外內層迴圈,完成排序 printf("最後排序為:\n");//在螢幕顯式「最後排序為:」並換行 for(i=0;i //同開始的for迴圈類似 //結束迴圈輸出 printf("\n"); //輸出換行到螢幕,看不到什麼效果,可刪掉}//結束main()函式 2樓:匿名使用者 舉個例子: 比如說有一組陣列:1,6,3,9,7,4 想要給它做排序,把這個陣列從小到大的排列 這裡就可以使用冒泡演算法(就像河裡的泡向上冒,小的泡會在大的泡的上面一樣) 這裡氣泡排序就是小的數字一個一個往前移,直到前面沒有比它大的數了,就停下來,每個數都同理。 程式舉例(仍舊是上面的例子,但是我用的不是c語言,但你應該看得懂)int array=new int[6]; for(int m=0;m<6;m++)}。 3樓:匿名使用者 就是每進行一輪迴圈(內迴圈一次),把最大或最小的值放到最後一個位置即冒出。如 3 2 1 6 5 一輪後:2 1 3 5 6 4樓:匿名使用者 比如從小到大排列 就是陣列中,從a[0]開始,a[i]和a[i+1]比較,小的放前,大的放後,直到最後一項,一輪之後最大的數就到最後面了. 第二輪同樣,比到倒數第二項即可(當然比到最後一項也不會錯),這樣次大項到了倒數第二項. 這樣n-1輪之後,就排列好了. 個人覺得還不叫"沉底法",呵呵,當然倒過來看就是"冒泡法"了 什麼是氣泡排序法?能說具體點嗎? 5樓:匿名使用者 氣泡排序. 將一組整數按小到大排列後存回原存貯區. 演算法: 相鄰二個數比較,小的調到前頭. 資料結構: 變數n: 這一組數的個數,從鍵盤輸入. 一維陣列a: 存放這n 個數(a[1],……,a[n-1],a[n]) 迴圈變數i=1, j=1 框圖:j=1,只要外迴圈次數j未到n-1次i=1, 只要內迴圈次數i未完 y a[i]>a[i+1] na[i] a[i+1] i=i+1 j=j+1 輸出排好序的a[1]------a[n] main( ) 6樓:將軍戰艦 快速排序和堆排序必須掌握,至於冒泡可以無視,題做多了自然就理解了,關鍵是**量 7樓:啊dai乖 簡單的說,氣泡排序法就是,有幾個人比打架誰厲害,他們站成了一列,最後一個人和倒數第二個人打架,贏的繼續跟倒數第三個打架,這樣打到最後,最後,就打出了第一個最厲害的。先把他放出佇列。繼續是佇列最後一個人和倒數第二個打架,繼續這樣打下去,選出了第二個僅次於最厲害的那個人,放出佇列,以此類推,最後就可以排序好了。 8樓:天亮以前 void sum() ;int i,t,j; for(i=0;i<6-1;i++)}} for(i=0;i<6;i++) printf("\n"); }*/這是一個c語言的例子 冒泡就是一個一個的比較只和後一個比然後在和後一個比這樣依次到排好! 9樓:匿名使用者 這上面講的很好,自己去看看吧! 希望採納,謝謝! 10樓:匿名使用者 //給定陣列a[0]~a[n-1] for(i=0;ia[j]) swap(a[i],a[j]);//交換a[i],a[j] 什麼是氣泡排序演算法 11樓:縱橫豎屏 氣泡排序演算法:重複地走訪過要排序的元素列,依次比較兩個相鄰的元素,如果他們的順序(如從大到小、首字母從a到z)錯誤就把他們交換過來。走訪元素的工作是重複地進行直到沒有相鄰元素需要交換,也就是說該元素已經排序完成。 這個演算法的名字由來是因為越大的元素會經由交換慢慢「浮」到數列的頂端(升序或降序排列),就如同碳酸飲料中二氧化碳的氣泡最終會上浮到頂端一樣,故名「氣泡排序」。 12樓:車芊力文曜 基本思路:對尚未排序的各元素從頭到尾依次比較相鄰的兩個元素是否逆序(與欲排順序相反),若逆序就交換這兩元素,經過第一輪比較排序後便可把最大(或最小)的元素排好,然後再用同樣的方法把剩下的元素逐個進行比較,就得到了你所要的順序。可以看出如果有 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 13樓:七歲一枯榮 起泡排序,別名「氣泡排序」,該演算法的核心思想是將無序表中的所有記錄,通過兩兩比較關鍵字,得出升序序列或者降序序列。 14樓:機靚歸方雅 #include #define max_n 1024 /*儲存大小為1024*/ void bubsort(int a,int n)/*氣泡排序*/ }int main(void) 15樓:務知北世敏 從小到大的排序 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++)} 氣泡排序是什麼? 16樓:匿名使用者 基本思路:對尚未排序的各元素從頭到尾依次比較相鄰的兩個元素是否逆序(與欲排順序相反),若逆序就交換這兩元素,經過第一輪比較排序後便可把最大(或最小)的元素排好,然後再用同樣的方法把剩下的元素逐個進行比較,就得到了你所要的順序。可以看出如果有 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 for i:=first(l) to last(l)-1 do for j:=first(l) to last(l)-i do if l[j]>l[j+1] then 4 swap(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 end if next for each c in a print c; next end sub 17樓:最愛一步兩步 氣泡排序,是一種電腦科學領域的較簡單的排序演算法。 它重複地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重複地進行直到沒有再需要交換,也就是說該數列已經排序完成。 氣泡排序演算法運作原理: 比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。 對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。在這一點,最後的元素應該會是最大的數。 針對所有的元素重複以上的步驟,除了最後一個。 持續每次對越來越少的元素重複上面的步驟,直到沒有任何一對數字需要比較。 氣泡排序法是什麼 18樓:雙元麼洲 氣泡排序,是指計算機的一種排序方法,它的時間複雜度為o(n^2),雖然不及堆排序、快速排序的o(nlogn,底數為2),但是有兩個優點:1.「程式設計複雜度」很低,很容易寫出**;2. 具有穩定性,這裡的穩定性是指原序列中相同元素的相對順序仍然保持到排序後的序列,而堆排序、快速排序均不具有穩定性。不過,一路、二路歸併排序、不平衡二叉樹排序的速度均比氣泡排序快,且具有穩定性,但速度不及堆排序、快速排序。氣泡排序是經過n-1趟子排序完成的,第i趟子排序從第1個數至第n-i個數,若第i個數比後一個數大(則升序,小則降序)則交換兩數 「氣泡排序法」是什麼? 19樓: 氣泡排序詳細註釋: /* 用氣泡排序法對一維整型陣列中的十個數升序排序 */ #include #include int main() printf("the sequence after sort is:\n"); for(i=0;i<10;i++) printf("%-5d",a[i]); printf("\n"); system("pause"); return 0; } 其中i=0時: j從0開始a[0],a[1]比較大小,把其中的較大者給a[1],然後j++,a[1]和a[2]再比較,再把兩者中的 較大者給a[2],這樣a[0],a[1],a[2]中的最大者已經交換到a[2]中,這個過程繼續,直到j=10-i-1=9這樣 a[9]中的為10個數中的最大數。 然後i=1時: 由於最大數已找到並放到a[9]中,所以這一次迴圈j最大隻需到10-i-1=8,即a[8]即可,再次從j=0開始a[j]和a[j+1]兩兩比較交換,最後次大數放到a[8]中 然後i++,繼續... 當i=9時已經過9次兩兩比較完成所有排序,i<9不再成立退出比較。 對於n個數,只需要進行n-1次外迴圈的兩兩比較就完成排序。 至於按降序排列只需將if(a[j]>a[j+1])改為if(a[j] #include int main() if(flag==0)break; } printf("the sequence after sort is:\n"); for(i=0;i<10;i++) printf("%-5d",a[i]); printf("\n"); system("pause"); return 0; } 這個和上面的實質一樣,只是加了一個標誌flag,當在一次大迴圈(即外層迴圈)內,在內層迴圈中如果 沒有發生一次交換,那麼就表示a[0] 不能,比如輸入2 5 3 6 8,在第二個for迴圈當中 for j i 1 ja j 你a i 用的i,而i 0,那麼總是a 0 2與5 3 6 8比,而a 0 是最小的一個,那麼怎麼也進不了if迴圈中flag就為0咯,又return,就結束咯換下for i 1 ia j 1 如果前面的數比後面的... 這是錯的,參考冒bai 泡的 比du較交換 for j 0 ja i 1 陣列zhi元素大小按升序排列 第一個daofor迴圈專是n 1,第二個for迴圈是n 1 j,氣泡排序屬的時間複雜度是o n 2 以下排序演算法最壞情況下時間複雜度最低的是 a.氣泡排序 b.插入 c.選擇 d.快排 在氣泡排... 原因有二,一是你沒把變數賦值 因此輸出全是0 二是你的程式有些錯誤,應該是a i 而不是a 1 下面為修改後的程式。private sub command1 click dim a 30 as integer dim i,j,tem as integerconst n 30 給a i 賦值 for ...c語言冒泡法排序問題
對於長度為n的序列,採用氣泡排序法進行排序,一定要進行n
VB的簡單氣泡排序