使用氣泡排序將給定數字列表按升序排序的 C 程式


在 C 程式語言中,氣泡排序是最簡單的排序技術,也稱為交換排序。

氣泡排序的過程

  • 將第一個元素與列表中其餘元素進行比較,如果它們沒有按順序排列,則交換(交換)它們。

  • 對列表中的其他元素重複相同的操作,直到所有元素都排序完畢。

演算法

下面是使用氣泡排序技術將給定數字列表按升序排序的演算法:

步驟 1 - 開始

步驟 2 - 獲取列表(陣列)num

步驟 3 - 讀取列表(list,num)

步驟 4 - 列印列表(list,num)

步驟 5 - 氣泡排序(list,num)

步驟 6 - 列印列表(list,num)

readlist (list, num)

步驟 7 - 結束

1. for j = 0 to num
2. read list[j].

列印列表(list,num)

1. for j =0 to num
2. write list[j].

氣泡排序(list,num)

1. for i = 0 to num
2. for j =0 to (num – i)
3. if( list[j] > list[j+1])
4. swapList( address of list[j], address of list[j+1])

交換列表(list[j]的地址,list[j+1]的地址)

1. temp = value at list[j]
2. value at list[j] = value at list[j+1]
3. value at list[j+1] = temp

示例

以下是使用氣泡排序技術將給定數字列表按升序排序的 C 程式

 線上演示

#include <stdio.h>
#define MAX 10
void swapList(int *m,int *n){
   int temp;
   temp = *m;
   *m = *n;
   *n = temp;
}
/* Function for Bubble Sort */
void bub_sort(int list[], int n){
   int i,j;
   for(i=0;i<(n-1);i++)
      for(j=0;j<(n-(i+1));j++)
         if(list[j] > list[j+1])
            swapList(&list[j],&list[j+1]);
   }
   void readlist(int list[],int n){
   int j;
   printf("
Enter the elements:
");    for(j=0;j<n;j++)       scanf("%d",&list[j]);    }    /* Showing the contents of the list */    void printlist(int list[],int n){       int j;    for(j=0;j<n;j++)       printf("%d\t",list[j]); } void main(){    int list[MAX], num;    printf(" Enter the number of elements
");    scanf("%d",&num);    readlist(list,num);    printf("

Elements in the list before sorting are:
");    printlist(list,num);    bub_sort(list,num);    printf("

Elements in the list after sorting are:
");    printlist(list,num); }



輸出



執行上述程式時,會產生以下結果:

Enter the number of elements
10

Enter the elements:
11
23
45
1
3

6
35
69
10
22


Elements in the list before sorting are:
11 23 45 1 3 6 35 69 10 22

Elements in the list after sorting are:
1 3 6 10 11 22 23 35 45 69

更新於: 2021-09-01

5K+ 次檢視

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告