/* file name: selectionSort.c */ /* 選擇排序 */ #include #include void select_sort(int[], int); void printDashLine(void); int main(void) { int data[20]; int size = 0, i; printf("\n請輸入資料(輸入 0 表示結束): "); /* 要求輸入數字直到輸入數字為 0 */ do { scanf("%d", &data[size]); } while(data[size++] != 0); printf("未排序的資料 : "); for (i = 0; i < size-1; i++) printf("%d ", data[i]); printf("\n"); printDashLine(); select_sort(data, --size); printDashLine(); printf("由小至大排序後的資料: "); for (i = 0; i < size; i++) printf("%d ", data[i]); printf("\n"); return 0; } void select_sort(int data[], int size) { int base, compare, min, temp, i; for (base = 0; base < size-1; base++) { /* 將目前資料與後面資料中最小的對調 */ min = base; for (compare = base+1; compare < size; compare++) if(data[compare] < data[min]) min = compare; printf("#%d PASS 選取 %d\n", base+1, data[min]); /* 交換的動作 */ temp = data[min]; data[min] = data[base]; data[base] = temp; for (i = 0; i < size; i++) printf(" %d ", data[i]); printf("\n\n"); } } void printDashLine() { for (int i = 0; i < 40; i++) printf("-"); printf("\n"); }