A. 如何用c語言編寫冒泡排序的程序
對擁有 n 個元素的數組 R[n] 進行 n-1 輪比較。
第一輪,逐個比較 (R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-1], R[N]),最大的元素被移動到 R[n] 上。
第二輪,逐個比較 (R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-2], R[N-1]),次大的元素神槐被移動到 R[n-1] 上。
。。。。枯羨。。
以此類推,直到整個數組從小到大排序。
具體的代碼實現如下所示游敗友:
#include <stdio.h>
int main(){
int nums[10] = {4, 5, 2, 10, 7, 1, 8, 3, 6, 9};
int i, j, temp;
//冒泡排序演算法:進行 n-1 輪比較
for(i=0; i<10-1; i++){
//每一輪比較前 n-1-i 個,也就是說,已經排序好的最後 i 個不用比較
for(j=0; j<10-1-i; j++){
if(nums[j] > nums[j+1]){
temp = nums[j];
nums[j] = nums[j+1];
nums[j+1] = temp;
}
}
}
//輸出排序後的數組
for(i=0; i<10; i++)
{
printf("%d ", nums[i]);
}
printf("\n");
return 0;
}
B. c語言 冒泡法是什麼啊
冒泡法是排序的一種方法,冒泡法和冒泡排序實是一個定義.之所以叫冒泡法,即是像在水中的氣泡一樣,在一輪兩數比較之後將最小(或最大的數字)排在一列數的左邊(當然右邊也行,總之是一邊).然後排開這個數,經過N-2排開之後,整列數的大小就是按順序來的.
C. c語言怎麼做冒泡排序啊
使用冒泡排序法進行編程:
解釋:
1.第一個for循環:利用數組循環輸入4個變數。
2.第二個for循環:該循環的意思是如果a[0]>a[1]的話,兩個變數的值交換,利用循環依次比較。要注意的是i<3,因為其中有i+1,i最大取到2,也就悶渣是i+1最大取到3才正確。
3.第三個for循環:利用循環依次輸出螞渣悄排序後的數組,每輸出一個加一個空格以便於區分。
(3)c語言視頻冒泡法擴展閱讀:
冒泡排序法,從數組頭部開始,不斷比較相鄰的兩個元素的大小,通過交換兩個元素的值使較大的元素逐漸往後移動,直到數組的末尾。
經過第一輪的比較,就可以找到最大的元素,並將它移動梁燃到最後一個位置。第一輪結束後,繼續第二輪。仍然從數組頭部開始比較,讓較大的元素逐漸往後移動,直到數組的倒數第二個元素為止。
經過第二輪的比較,就可以找到次大的元素,並將它放到倒數第二個位置。
以此類推,進行 n-1(n 為數組長度)輪「冒泡」後,就可以將所有的元素都排列好。
D. c語言中冒泡法是什麼意思
冒泡法是一種排序方法
冒泡法5
4
3
2
1
比如上面這5個數字我們把它按照由小到大的順序排列,
從前往後相臨兩位比較大小,如果前一位比後一位大就把它倆
換位,5比4大就把5和4換位,得到45321
5又比3大
5和3換位
得到43521
依次類推最後得到
43215
這樣就把最大的一個數字移到最後面了
然後不看5
,剩下4321
再用上面的方法把4移動到最後
得到
32145
在不看45
剩下321
把3移動到
最後,依此類推。
最終得到12345
這就是冒泡法,是計算機編程排序中最簡單快捷的方法。
除此意外我還能寫出許多排序方法,但是效率上都不如冒泡法
至於為什麼叫冒泡法呢,你把這幾個數字豎起來看
1
2
3
4
5
把最大的數字5看成最大的泡泡,浮到最上,然後4又浮上去,依此類推
得到
5
4
3
2
1
所以形象的稱為冒泡法
——————————————————————————————————
以下是C語言中十個數的冒泡法排序的代碼
#include<stdio.h>
#include<conio.h>
int
main(void)
{
long
arrary[9],
box=0L;
int
i1=0,
i2=0;
for(i1=0;i1<9;i1++)
arrary[i1]=0;
printf("輸入數組元素:\n");
for(i1=0;i1<=9;i1++)
{
printf("%3d>",i1+1);
scanf("%d",&arrary[i1]);
}
for(i1=0;i1<=9;i1++)
for(i2=0;i2<=9-i1;i2++)
{
if(arrary[i2]<arrary[i2+1])
{
box=arrary[i2+1];
arrary[i2+1]=arrary[i2];
arrary[i2]=box;
}
}
printf("\n排序後為:\n");
for(i1=0;i1<=9;i1++)
printf("%3d>%d\n",i1+1,arrary[i1]);
getch();
return
0;
}
E. c語言中冒泡排序的實現原理是什麼
冒泡排序,就是對一組數進行逐趟排序的方法,具體分為升序和降序。
以升序為例。
每一趟的任務,就是從一組數的第一個數開始,依次比較相鄰的兩個數的大小。既然是升序,那麼比較後,如果前者大於後者,那麼兩者交換位置。就這樣依次地比下去。
這樣的話,第一趟就把最大的數排到了最後。
而每再比較一趟的時候,都排除已經生成的結果,比如第二趟,不會再比較最後一個數(它已經是最大的了,當然如果比較也沒問題,浪費時間而已);第三趟,不會再比較最後兩個數。。。
每一趟都把最大的數排到當前范圍的末尾。
這樣循環下去,每一趟都會把當前范圍內最大的數扔到後面去。排序就完成了。
------------------------------------------------------------------------------------------------------------------------------
舉個升序排序的例子:
對於{ 10,5,3,11,9 }這組數,
第一趟,10與5比較,10 比5大,所以互換位置(5,10,3,11,9),10和3比較,10>3,所以互換位置(5,3,10,11,9),10與11比較,不用互換位置;11與9比較,互換位置(5,3,10,9,11),第一趟結束;
第二趟,由於11已經是最大的,那麼只剩下{5,3,10,9};5>3,所以互換位置(3,5,10,9);5<10,不用互換位置;10>9,互換位置(3,5,9,10),第二趟結束。
第三趟,只剩下{3,5,9},3<5,不用互換位置;5<9,不用互換位置,第三趟結束。
第四趟,只剩下{3,5},3<5,不用互換位置,第四趟結束。
此時由於只剩兩個數,本趟已經把兩個數較大的一個放到了第二的位置,所以循環到此結束。
結果就是{3,5,9,10,11}。
過程中,每一趟都會把相鄰的兩個數中較大的換到後面,即每趟中,最大的數都會被置換到最後,就像一個氣泡浮出水面一樣,越來越大,到出水時就是最大的。所以才叫冒泡排序。
F. c語言中的冒泡法是怎樣的
其實就如其名
如下數據
5 3 2 4 1
從5開始與相鄰的數字交換,大的擺右小的擺左
則第一的結果為
3 5 2 4 1
然後繼續執行,直到與最後一個數據交換完畢,結束一次循環
於是的得到
3 2 4 1 5
很顯然,最後一個數據時最大的,
冒泡就是這個意思,每次循環找出最大的,然後找到除這個數之外最大的,直至數組排序完畢。
其實你也可以,用一個max函數返回數組的最大值的位置,把它與最後一個數字交換
如
5 4 2 3 1->1 4 2 3 5
然後除掉最後一個數字,找最大值與倒數第2個數字交換。
1 4 2 3 5->1 3 2 4 5
。。以此類推