使用氣泡排序將給定數字列表按升序排序的 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
廣告