Data_Structure/資料結構光碟檔/CH13/selectionSort.c.txt
2025-01-20 21:25:33 +08:00

64 lines
1.4 KiB
Plaintext

/* file name: selectionSort.c */
/* 選擇排序 */
#include <stdio.h>
#include <stdlib.h>
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");
}