1樓:牧念露
#include
void main()
;int i,j,k;
//for(i=0;i<8;i++)
for(j=0;j<10;j++)
}for(j=0;j<9;j++)=>for(j=0;j<10;j++) 9在j[9]中
printf("\n");
//getch();}
2樓:匿名使用者
陣列元素進行比較的時候,下標不對。
#include
void main()
;int i,j,k;
for(i=0;i<8;i++)
for(j=i;j<8;j++)
}for(j=0;j<9;j++)
printf("\n");
//getch();}
3樓:匿名使用者
for(j=0;j<10;j++)
這一句 有問題。改為 for(j=0;j<8;j++)注意 a中只有9項,a[n]最大隻能是a[8];
#include
void main()
;int i,j,k;
for(i=0;i<9;i++)}}
for(j=0;j<9;j++)
printf("\n");
}這是修改過的正確的。
4樓:
首先,你的氣泡排序有問題,氣泡排序是大數沉底,兩重迴圈,丟了9是因為for(j=0;j<10;j++)這句,以下是改好的程式#include
void main()
;int i,j,k;
for(i=0;i<=8;i++)
for(j=0;j<=7-i;j++)
}for(j=0;j<9;j++)
printf("\n");
//getch();}
c語言氣泡排序法
5樓:匿名使用者
#include//連結標準標頭檔案
#define n 5 //定義常量n並賦值為5void main() //主函式入口
//迴圈結束
for(i=0;i //從此便完成大小變數的交換,使得大值往前放} //結束內層迴圈 } //結外內層迴圈,完成排序 printf("最後排序為:\n");//在螢幕顯式「最後排序為:」並換行 for(i=0;i printf("\n"); //輸出換行到螢幕,看不到什麼效果,可刪掉 } //結束main()函式 6樓:匿名使用者 有n個數,進行n便過濾 第i遍時從第1個數起到第n-i個數止依次比較x 和 x+1兩個數 如果數(x)〉(x+1)就交換他們形象一些就好象是將較大的數向下沉,每一遍都會把這一遍能遇到的最大數壓倒底,這樣n便之後,就形成了小到大的有序數列 7樓:匿名使用者 #include void main() ,i,j; int temp; for (i=0;i<4;i++) printf("%d",a[j]); }printf("\n"); } printf("\n"); printf("最後排列出的結果為:"); for(j=0;j<4;j++) putchar('\n'); }兩個相鄰的數進行比較,較小的數在前面較大的數往後排(從小到大排列)執行完一次又重新排,直到所有的數都是從小到大為此,方才結束. 8樓:黃振 進來了就說下吧,c語言氣泡排序法的基本思想是:將相鄰的資料元素的關鍵字進行比較,若前面元素的關鍵字大於後面元素的關鍵字,則將它們互換,否則不交換! 例如下面從小到大排序的源程式: #include #define n 5 void main(); printf("未排序的陣列是:\n"); for(i = 0;i < n;i++) for(i = 0;i for(i = 0; i < n;i++)printf("\n");} c語言氣泡排序。 9樓:大野瘦子 #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;} 10樓:匿名使用者 //以下以四個數字的給舉例,便於理解; #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*/ 11樓:鮮日國漢 #include intmain(void) ;int t=0; inti=0,j=0; for(i=0;i<10;i++) /*開始冒泡排 序*/for(i=10;i>0;i--) for(j=0;jnum[j+1]) /*按從小到大*/ }for(i=0;i<10;i++) /*排序後輸出*/ printf("%d ",num[i]); getch(); return0;} 12樓:盛京小夥 main() } for(i=1;i<11;i++) printf("%5d,",a[i] ); printf("\n"); }-------------- 冒泡演算法 氣泡排序的演算法分析與改進 交換排序的基本思想是:兩兩比較待排序記錄的關鍵字,發現兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。 應用交換排序基本思想的主要排序方法有:氣泡排序和快速排序。 氣泡排序 1、排序方法 將被排序的記錄陣列r[1..n]垂直排列,每個記錄r看作是重量為r.key的氣泡。 根據輕氣泡不能在重氣泡之下的原則,從下往上掃描陣列r:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反覆進行,直到最後任何兩個氣泡都是輕者在上,重者在下為止。 (1)初始 r[1..n]為無序區。 (2)第一趟掃描 從無序區底部向上依次比較相鄰的兩個氣泡的重量,若發現輕者在下、重者在上,則交換二者的位置。即依次比較(r[n],r[n-1]),(r[n-1],r[n-2]),…,(r[2],r[1]);對於每對氣泡(r[j+1],r[j]),若r[j+1].key=i;j--) //對當前無序區r[i.. n]自下向上掃描 if(r[j+1].key if(!exchange) //本趟排序未發生交換,提前終止演算法 return; } //endfor(外迴圈) } //bubblesort 4、演算法分析 (1)演算法的最好時間複雜度 若檔案的初始狀態是正序的,一趟掃描即可完成排序。所需的關鍵字比較次數c和記錄移動次數m均達到最小值: cmin=n-1 mmin=0。 氣泡排序最好的時間複雜度為o(n)。 (2)演算法的最壞時間複雜度 若初始檔案是反序的,需要進行n-1趟排序。每趟排序要進行n-i次關鍵字的比較(1≤i≤n-1),且每次比較都必須移動記錄三次來達到交換記錄位置。在這種情況下,比較和移動次數均達到最大值: cmax=n(n-1)/2=o(n2) mmax=3n(n-1)/2=o(n2) 氣泡排序的最壞時間複雜度為o(n2)。 (3)演算法的平均時間複雜度為o(n2) 雖然氣泡排序不一定要進行n-1趟,但由於它的記錄移動次數較多,故平均時間效能比直接插入排序要差得多。 (4)演算法穩定性 氣泡排序是就地排序,且它是穩定的。 5、演算法改進 上述的氣泡排序還可做如下的改進: (1)記住最後一次交換髮生位置lastexchange的氣泡排序 在每趟掃描中,記住最後一次交換髮生的位置lastexchange,(該位置之前的相鄰記錄均已有序)。下一趟排序開始時,r[1..lastexchange-1]是有序區,r[lastexchange.. n]是無序區。這樣,一趟排序可能使當前有序區擴充多個記錄,從而減少排序的趟數。具體演算法【參見習題】。 (2) 改變掃描方向的氣泡排序 ①氣泡排序的不對稱性 能一趟掃描完成排序的情況: 只有最輕的氣泡位於r[n]的位置,其餘的氣泡均已排好序,那麼也只需一趟掃描就可以完成排序。 【例】對初始關鍵字序列12,18,42,44,45,67,94,10就僅需一趟掃描。 需要n-1趟掃描完成排序情況: 當只有最重的氣泡位於r[1]的位置,其餘的氣泡均已排好序時,則仍需做n-1趟掃描才能完成排序。 【例】對初始關鍵字序列:94,10,12,18,42,44,45,67就需七趟掃描。 ②造成不對稱性的原因 每趟掃描僅能使最重氣泡"下沉"一個位置,因此使位於頂端的最重氣泡下沉到底部時,需做n-1趟掃描。 ③改進不對稱性的方法 在排序過程中交替改變掃描方向,可改進不對稱性 複製過來的! 13樓:抗婉竭青 本題的一個完整的c程式如下,程式在win-tc和dev-c++下都除錯通過。 #include #include #include void bubble_sort(int array)}} intmain() bubble_sort(a); printf("\n\nthe sequence after sort is:\n"); for(i=0;i<50;i++) getch(); /*格式rand()%(m-n+1)+n;產生一個n->m區間的隨機數*/} 如下 class program static void main string args 個同學的分數 i array i 1 int.parse console.readline sort array console.writeline n 成績排序結果如下 for int i 0 i arra... 1.定義了a 10 十個儲存的空間,後面賦了九個值,最後一個沒有賦也就是說用0代替,這是對的 for i 0 i 8 i for j 0 j 8 i j 你的迴圈中,8限制了你比較的數是8 1 9個,最後一個0沒有參加比較,還是放在陣列a 9 中,如果你要0參加排序,上面的兩個8改為9 for i ... 乾珈藍佑 將你的 中 for j 9,q 1 q n k j q 的n改為10就可以了 for j 9,q 1 q 10 k j q 改為10以後,程式就沒有問題了 你的main函式顯示有問題,顯示的aa.display 在排序的aa.sortnum 之前了,那樣顯示的是排序前的順序,在aa.sor...C氣泡排序,c 關於氣泡排序法的簡單程式碼
c語言氣泡排序法的太多不懂
C 下用氣泡排序法排列數,C 下用氣泡排序法排列10個數