您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關C語言中排序算法有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1.冒泡排序
1.1算法
冒泡排序(buddle-sort)算法的運作如下:(從后往前)
比較相鄰的元素。如果第一個比第二個大,就交換他們兩個。
對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最后一對。在這一點,最后的元素應該會是最大的數。
針對所有的元素重復以上的步驟,除了最后一個。
持續每次對越來越少的元素重復上面的步驟,直到沒有任何一對數字需要比較。
1.2 實現
// // main.c // BubbleSort // // Created by Wuyixin on 2017/6/2. // Copyright © 2017年 Coding365. All rights reserved. // #include <stdio.h> void bubbleSort(int a[],int n){ int i,j; for (i = 0; i < n - 1; i++) { for (j = 0; j < n - i; j++) { if (a[j] > a[j + 1]){ int temp = a[j]; a[j] = a[j + 1]; a[j + 1] = temp; } } } } int main(int argc, const char * argv[]) { int a[] = {9,3,1,4,7,6,5,8,2}; bubbleSort(a, 9); int i = 0; while (i < 9) printf("%d ",a[i++]); return 0; }
2.選擇排序
2.1 算法
選擇排序(selection-sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數據元素排完
2.2實現
// // main.c // SelectionSort // // Created by Wuyixin on 2017/6/2. // Copyright © 2017年 Coding365. All rights reserved. // #include <stdio.h> void selectionSort(int a[],int n){ int i,j,min,temp; for (i = 0; i < n; i++) { min = i; for (j = i + 1; j < n; j++) { if (a[j] < a[min]) min = j; } if (i != min){ temp = a[i]; a[i] = a[min]; a[min] = temp; } } } int main(int argc, const char * argv[]) { int a[] = {9,3,1,4,7,6,5,8,2}; selectionSort(a, 9); int i = 0; while (i < 9) printf("%d ",a[i++]); return 0; }
3.插入排序
3.1 算法
插入排序(insertion-sort)的基本思想是:每步將一個待排序的紀錄,按其關鍵碼值的大小插入前面已經排序的文件中適當位置上,直到全部插入完為止。
3.2 實現
// // main.c // InsertionSort // // Created by Wuyixin on 2017/6/2. // Copyright © 2017年 Coding365. All rights reserved. // #include <stdio.h> void insertionSort(int a[],int n){ int i,j,temp; for (i = 1; i < n ; i++) { temp = a[i]; for (j = i; j > 0 && temp < a[j - 1]; j--) { a[j] = a[j - 1]; } a[j] = temp; } } int main(int argc, const char * argv[]) { int a[] = {9,3,1,4,7,6,5,8,2}; insertionSort(a, 9); int i = 0; while (i < 9) printf("%d ",a[i++]); return 0; }
關于“C語言中排序算法有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。