C語言中冒泡法 選擇法 插入法三種常見排序演算法分析

2021-07-05 14:02:21 字數 1435 閱讀 3567

一、冒泡法(起泡法)

演算法要求:用起泡法對10個整數按公升序排序。

演算法分析:如果有n個數,則要進行n-1趟比較。在第1趟比較中要進行n-1次相鄰元素的兩兩比較,在第j趟比較中要進行n-j次兩兩比較。比較的順序從前往後,經過一趟比較後,將最值沉底(換到最後乙個元素位置),最大值沉底為公升序,最小值沉底為降序。

演算法源**:

# include

main()

/*輸出排序結果*/

printf("the sorted numbers: ");

for(i=0;i<10;i++)

printf("%d   ",a[i]);

printf("\n");

}演算法特點:相鄰元素兩兩比較,每趟將最值沉底即可確定乙個數在結果的位置,確定元素位置的順序是從後往前,其餘元素可能作相對位置的調整。可以進行公升序或降序排序。

二、選擇法

演算法要求:用選擇法對10個整數按降序排序。

演算法分析:每趟選出乙個最值和無序序列的第乙個數交換,n個數共選n-1趟。第i趟假設i為最值下標,然後將最值和i+1至最後乙個數比較,找出最值的下標,若最值下標不為初設值,則將最值元素和下標為i的元素交換。

演算法源**:

# include

main()

/*則交換最值和當前序列的第乙個數*/

}printf("the sorted numbers: ");

for(i=0;i<10;i++)

printf("%d   ",a[i]);

printf("\n");

}演算法特點:每趟是選出乙個最值確定其在結果序列中的位置,確定元素的位置是從前往後,而每趟最多進行一次交換,其餘元素的相對位置不變。可進行降序排序或公升序排序。

三、插入法

演算法要求:用插入排序法對10個整數進行降序排序。

演算法分析:將序列分為有序序列和無序列,依次從無序序列中取出元素值插入到有序序列的合適位置。初始是有序序列中只有第乙個數,其餘n-1個數組成無序序列,則n個數需進n-1次插入。尋找在有序序列中插入位置可以從有序序列的最後乙個數往前找,在未找到插入點之前可以同時向後移動元素,為插入元素準備空間。

演算法源**:

# include

main()

printf("the sorted numbers: ");

for(i=0;i<10;i++)

printf("%d   ",a[i]);

printf("\n");

}演算法特點:每趟從無序序列中取出第乙個數插入到有序序列的合適位置,元素的最終位置在最後一趟插入後才能確定位置。也可是先用迴圈查詢插入位置(可從前往後或從後往前),再將插入位置之後的元素(有序列中)逐個後移乙個位置,最後完成插入。該演算法的特點是在尋找插入位置的同時完成元素的移動。因為元素的移動必須從後往前,則可將兩個操作結合在一起完成,提高演算法效率。仍可進行公升序或降序排序。

摘自 離草的伊甸園

冒泡法 選擇法 插入法排序

includevoid inputarray int a,int n 輸入陣列元素 void outputarray int a,int n 輸出陣列元素 void sort01 int a,int n 冒泡法排序 void sort02 int a,int n 選擇法排序 void sort03 ...

排序的常見的三種方法 冒泡法 選擇法 插入法

int tmp for int i 0 i arr.length 1 i 選擇排序就是從第一趟開始,用第乙個元素和剩下中的每乙個元素比較,如果比第乙個小,就和第乙個元素交換值,最後使得第乙個元素中的值最小,第二趟選擇出第二小的放到第二元素,依次,使得陣列有序。int tmp int minindex...

C語言 排列陣列的三種方法 冒泡法 選擇法 插入法

以下幾種排序 要求能夠手寫 氣泡排序 bubblesort 的基本概念是 依次比較相鄰的兩個數,將小數放在前面,大數放在後面。即在第一趟 首先比較第1個和第2個數,將小數放前,大數 放後。然後比較第2個數和第3個數,將小數放前,大數放後,如此繼續,直至比較最後兩個數,將小數放前,大數放後。inclu...