2.1 初級排序算法
阿新 • • 發佈:2019-04-27
all fault 語言 random ted urn alloc default n)
2.1demo的C語言實現
/* * 實現數組從小到大順序排列 */ #include <stdio.h> #include <stdlib.h> #define less(a,b) (a<b) #define exch(array, a, b) do { int tmp = array[a]; array[a] = array[b]; array[b] = tmp; } while(0) /* * 選擇排序法 */ void selectSort(int*array, int size) { int i, j; for (i = 0; i < size; i++) { int min = i; for (j = i+1; j < size; j++) { if (less(array[j], array[min])) min = j; } exch(array, i, min); } } /* * 插入排序法 */ void insertSort(int *array, intsize) { int i, j; for (i = 1; i < size; i++) { for (j = i; j>0 && less(array[j], array[j-1]); j--) { exch(array, (j-1), j); } } } void show(int *array, int size) { int i; for (i = 0; i < size; i++) { printf("%d\n", array[i]); } printf("\n"); return; } int isSorted(int *array, int size) { int i; for (i = 1; i < size; i++) if (!less(array[i-1], array[i])) return 0; return 1; } void init_array(int *array, int size) { int i; for (i = 0; i < size; i++) { array[i] = random(); } } #define DEFAULT_SIZE 20 int main() { int *array = malloc(DEFAULT_SIZE*sizeof(int)); init_array(array, DEFAULT_SIZE); show(array, DEFAULT_SIZE); selectSort(array, DEFAULT_SIZE); show(array, DEFAULT_SIZE); insertSort(array, DEFAULT_SIZE); show(array, DEFAULT_SIZE); return 0; }
2.1 初級排序算法