1樓:聽不清啊
#include
#include
#include
main()
{ int flag,temp,i,j,a[20];
srand((unsigned)time(null));
printf("before sorting...\n");
for(i=0; i<20; i++)
{ a[i]=rand()%100;
printf("%3d",a[i]);
for(i=0; i<19; i++)
{ flag=0;
for(j=0; j<19-i; j++){ if(a[j]{ temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
flag=1;
if(flag==0)
break;
printf("\nafter sorting...\n");
for(i=0; i<20; i++)
printf("%3d",a[i]);
2樓:死心機綠茶
#include
#include
#include
void main()
}if(flag==0)
break;
}printf("after sorting...\n");
for(i=0;i<20;i++)
printf("%4d",a[i]);}
這個c語言的氣泡排序法**錯了?請大神看看
3樓:匿名使用者
第二層迴圈的開始初始化語句錯誤了,改為for(j=n-i-1;j>i;--j),這裡如果i=0,你的程式中就取到了a[n],這個位址顯然是非法的
4樓:匿名使用者
i=0時,j=5 a[5]沒有值啊,內部迴圈的j的賦值錯了,你再看看
c語言氣泡排序。
5樓:大野瘦子
#include
void main()
printf("the sorted numbers:\n");
for(i=0;i<10;i++)
printf(" %d",a[i]);
}氣泡排序演算法的運作
1、比較相鄰的元素。如果第乙個比第二個大(小),就交換他們兩個。
2、對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對。這步做完後,最後的元素會是最大(小)的數。
3、針對所有的元素重複以上的步驟,除了最後已經選出的元素(有序)。
4、持續每次對越來越少的元素(無序元素)重複上面的步驟,直到沒有任何一對數字需要比較,則序列最終有序。
簡單的表示
#include
void swap(int *i, int *j)int main()
;int i,j;
for (i = 0; i < 10; i++)}}for (i = 0; i < 10; i++)return 0;}
6樓:匿名使用者
//以下以四個數字的給舉例,便於理解;
#include
main()
; //定義陣列,陣列是本次要排序的數字組合;注意此處陣列中一共4個數字所以 理論上是 a[4]=;
//初試化i=1;並判斷i是否小於等於3; 如果符合條件 那麼進入for迴圈;(4個數字,兩兩對比需要進行3輪對比,i就代表了輪數;i需要經過 1,2,3 三輪的賦值;i=4的時候會跳出for迴圈)
for(i=1; i<=3; i++)}}for(i=0; i<4; i++)
}/*執行結果如下:
第 1個數字為:3
第 2個數字為:6
第 3個數字為:10
第 4個數字為:30*/
7樓:性煥老澹
這是優化後的演算法,如果陣列已有序,則沒有執行到
tag=1;所以退出迴圈,避免做無用功
8樓:碎裂什麼捏
#include
int main()
for(i=1;i<=a;i++) }
}for(i=1;i<=a;i++)
return 0;}
9樓:祖任練易蓉
你的程式裡排序時是按照大數存到低位址,
小數存到高位址,輸出時是先輸出高位址,後輸出低位址,所以輸出的數是公升序。而有錯位是因為輸出的格式是乙個「%d\t」,未給定數值的位寬。即456佔三個字元,而78是兩個字元。
10樓:哇哎西西
氣泡排序的思想:
首先,從表頭開始往後掃瞄陣列,在掃瞄過程中逐對比較相領兩個元素的大小。
若相鄰兩個元素中,前面的元素大於後面的元素,則將它們互換, 稱之為清去了乙個逆序。在掃瞄過程中,不斷地將兩相鄰元素中的大者往後移動,最後就將陣列中的最大者換到了表的最後,這正是陣列中最大元素應有的位置。
然後,在剩下的陣列元素中(n-1個元素)重複上面的過程,將次小元素放到倒數第2個位置。不斷重複上述過程,直到剩下的陣列元素為0為止,此時的陣列就變為了有序。假設陣列元素的個數為西,在最壞情況下需要的比較總次數為:
(n-1)+(n- 2)...+2+1)- n(n-1)/2。
源**如下
冒泡法排序:
#include
int main ()
for (j = 0;j < 9; j++)for (i = 0; i < 9 - j; i++)if (a[i] > a[i+1])
printf ("由小到大的順序為:\n");
for (i = 0; i < 10; i++)printf ("\n");
return 0;
} 執行結果
請輸入十個數:
a[1]=7
a[2]=8
a[3]=9
a[4]=6
a[5]=5
a[6]=4
a[7]=1
a[8]=2
a[9]=3
a[10]=99
由小到大的順序為:
1,2,3,4,5,6,7,8,9,99,
c語言中冒泡法是什麼意思?
11樓:過昊巫文敏
冒泡法是一種排序方法
冒泡法 543
21比如上面這5個數字我們把它按照由小到大的順序排列,從前往後相臨兩位比較大小,如果前一位比後一位大就把它倆換位,5比4大就把5和4換位,得到453215又比3大
5和3換位
得到43521
依次類推最後得到
43215
這樣就把最大的乙個數字移到最後面了
然後不看5
,剩下4321
再用上面的方法把4移動到最後
得到32145
在不看45
剩下321
把3移動到
最後,依此類推。
最終得到12345
這就是冒泡法,是計算機程式設計排序中最簡單快捷的方法。
除此意外我還能寫出許多排序方法,但是效率上都不如冒泡法至於為什麼叫冒泡法呢,你把這幾個數字豎起來看1234
5把最大的數字5看成最大的泡泡,浮到最上,然後4又浮上去,依此類推得到5
4321
所以形象的稱為冒泡法
#include
#include
intmain(void)
for(i1=0;i1<=9;i1++)
for(i2=0;i2<=9-i1;i2++)
12樓:匿名使用者
冒泡法是排序的一種方法,冒泡法和氣泡排序實是乙個定義.之所以叫冒泡法,即是像在水中的氣泡一樣,在一輪兩數比較之後將最小(或最大的數字)排在一列數的左邊(當然右邊也行,總之是一邊).然後排開這個數,經過n-2排開之後,整列數的大小就是按順序來的.
13樓:匿名使用者
交換排序的一種,很適合c語言初學者學習~詳細資訊請參照資料結構中的排序~
c語言氣泡排序降序沒問題,但公升序有問題,我是**做錯了嗎?
14樓:匿名使用者
/*冒泡法的基本思想就是:在待排序的資料中,先找到最小(大)的資料將它放到最前面,
再從第二個資料開始,找到第二小(大)的資料將它放到第二個位置,以此類推,直到只剩下最後乙個數為止。
這種排序方法在排序的過程中,
是小的數就如氣泡一樣逐層上浮,而使大的數逐個下沉,於是就形象地取名為氣泡排序,又名起泡排序
*/#include
#define length 10
int main()
printf("排序後的結果:\n");
for(i=0;iprintf("\n");
return 0;}
15樓:匿名使用者
把sortlist裡的 for j=0;j<=l->size-1-i; ...
改成for j=0;jsize-1-i; ...試試。
哪位高手幫我看一下這個程式那裡出錯了,是關於c語言氣泡排序的(大數下沉),一直排出來?
16樓:星灬花
這樣就ok 啦 一點小錯誤
#include"stdio.h"
void main()
for(i=0;i<=4;i++)
printf("%d\n",a[i]);}
17樓:匿名使用者
沒啥問題,{temp=a[i=1]; 這裡的=號應該是+號吧 ,你這個是小數下沉法……
關於c語言冒泡法的乙個問題?
18樓:
for(j=0;)這個迴圈的作用是啥
第九個不賦值就是0囉,0和別的比就被對換位置了唄
19樓:囚江子非魚
你是在寫冒泡法嗎?你寫的這個演算法不太對啊
C語言 編寫函式用氣泡排序法對陣列中的資料進行從小到大的排序
int i,j,temp for i 0 ia j 1 之間寫這個 編寫函式用氣泡排序法對陣列中的n個資料進行從小到大的排序。1 新建乙個163.php。2 輸入php網頁的結構 3 宣告php與瀏覽器互動的檔案型別和編碼。4 使用 array 函式定義乙個 numbers陣列。5 使用 sort ...
c語言中這個符號的意思是,請問下C語言中這個符號是什麼意思?
就是.也就是當前目錄 是 的轉義 是轉義 的意思.一般在路徑值中使用.所以 就是 表示目錄的.指當前工程目錄.c語言中 這個符號的意思是?就是.是轉義 意思是 所以這個就是.表示當前目錄 僅適用於windows 請問下c語言中 這個符號是什麼意思?是邏輯符號或。是連線符,不是換行,define需要定...
c語言這個題為什麼b是對的d是錯的
028.5e 3 可以,但加上bai 0xf 就組成du了表示式,0xf 是16進製制常數。0003.e5 等同 zhi 0003.0e5,等同 3.0e5 是數值常量dao.b 的 2個 數用專 逗號分隔,屬前面是合法的16進製製數,後乙個是 e 格式的常數。解這道題需要管什麼數字是什麼進 制麼?...