十大經典排序演算法
1.0 十大經典排序演算法
排序演算法是《資料結構與演算法》中最基本的演算法之一。
排序演算法可以分為內部排序和外部排序,內部排序是資料記錄在記憶體中進行排序,而外部排序是因排序的資料很大,一次不能容納全部的排序記錄,在排序過程中需要訪問外存。常見的內部排序演算法有:插入排序、希爾排序、選擇排序、氣泡排序、歸併排序、快速排序、堆排序、基數排序等。用一張圖概括:
氣泡排序最終結果是:數字按照從小變大的順序排列!#include int count = 0;
void bubble_sort(int arr, int len)
}int main() ;
int len = (int) sizeof(arr) / sizeof(*arr);
bubble_sort(arr, len);
printf("10個反序數,最大執行次數:%d\n", count);
int i;
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
return 0;
}
執行次數45次!
示例**:
#include int count = 0;
void swap(int *a, int *b) //
void selection_sort(int arr, int len) }}
int main() ;
int len = (int) sizeof(arr) / sizeof(*arr);
selection_sort(arr, len);
printf("10個反序數,最大執行次數:%d\n", count);
int i;
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
return 0;
}
執行結果:
printf("10個反序數,最大執行次數:%d\n", count);
int i;
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
return 0;
}執行結果:
}void swap(int *a, int *b) //交換兩個變數
void selection_sort(int arr, int len,int *pcount)
}void insertion_sort(int arr, int len,int *pcount)
}void shell_sort(int arr, int len, int *pcount)
}int main() ;
int len = (int) sizeof(arr) / sizeof(*arr);
int count = 0;
//氣泡排序
printf("執行氣泡排序:");
bubble_sort(arr, len,&count);
int i;
for (i = 0; i < len; i++)
printf("%d ", arr[i]);
printf("執行次數:%d\n", count);
count = 0;
//選擇排序
printf("執行選擇排序:");
selection_sort(arr, len, &count);
int j;
for (j = 0; j < len; j++)
printf("%d ", arr[j]);
printf("執行次數:%d\n", count);
count = 0;
//插入排序
printf("執行插入排序:");
insertion_sort(arr, len, &count);
int k;
for (k = 0; k < len; k++)
printf("%d ", arr[k]);
printf("執行次數:%d\n", count);
count = 0;
//希爾排序
printf("執行希爾排序:");
shell_sort(arr, len, &count);
int m;
for (m = 0; m < len; m++)
printf("%d ", arr[m]);
printf("執行次數:%d\n", count);
count = 0;
return 0;
}執行結果
C語言中排序演算法
選擇排序 拿到其中乙個元素的值依次和其他元素進行比較,完全比較完一次之後,最大或者最小的值出現在第0位.氣泡排序 用兩個相鄰的元素進行比較,每完全比較完依次,最大或者最小的值出現在末尾.例 intnums 5 int length sizeof nums sizeof nums 0 for int ...
C語言中排序函式的用法
c語言中沒有預置的sort函式。如果在c語言中,遇到有呼叫sort函式,就是自定義的乙個函式,功能一般用於排序。一 可以編寫自己的sort函式。如下函式為將整型陣列從小到大排序。void sort int a,int l a為陣列位址,l為陣列長度。對於這樣的自定義sort函式,可以按照定義的規範來...
C語言中排序函式的用法
c語言中沒有預置的sort函式。如果在c語言中,遇到有呼叫sort函式,就是自定義的乙個函式,功能一般用於排序。一 可以編寫自己的sort函式。如下函式為將整型陣列從小到大排序。void sort int a,int l a為陣列位址,l為陣列長度。對於這樣的自定義sort函式,可以按照定義的規範來...