C語言之冒泡排序
阿新 • • 發佈:2017-07-28
最大 fine 編程思路 watermark 冒泡 iss style ack return
如果要對含有n個數的序列進行升序排列,冒泡排序算法步驟是:
1、從存放序列的數組中的第一個元素開始到最後一個元素。依次對相鄰兩數進行比較,若前者大後者小,則交換兩數的位置。
2、第1趟結束後,最大數就存放到數組的最後一個元素裏了,然後從第一個元素開始到倒數第二個元素,依次對相鄰兩數進行比較,若前者大後者小,則交換兩數的位置;
3、反復步驟1 n-1趟,每趟比前一趟少比較一次。就可以完畢所求。
例1、隨機產生10個100以內的數,將其用冒泡法按升序排列後輸出。
編程思路:用最後一個數與前一個數比較,若比前一個數小
則交換位置。然後再與前一個數比較,若比前一個數小再交換
位置,知道比前一個數大或者已經在最前面!如此循環8次就能夠排好循序!
#include <stdio.h> #include <stdlib.h> #define n 10 int main(void) { int a[n],i,j,t; printf("隨機產生10個100以內的數:\n"); for(i=0;i<n;i++) { a[i] = rand()%100; printf("%d\n",a[i]); } printf("輸出:\n"); for(j=1;j<=n-1;j++) { /*n個數處理n-1趟*/ for(i=0;i<=n-1-j;i++) { /*每趟比前一趟少比較一次*/ if(a[i]>a[i+1]) { t=a[i]; a[i]=a[i+1]; a[i+1]=t; } } } for(i=0;i<n;i++) { printf("%d\n",a[i]); } return 0 ; }
執行結果:
C語言之冒泡排序