Data_Structure/資料結構光碟檔/CH13/insertionSort.c.txt

61 lines
1.3 KiB
Plaintext
Raw Normal View History

2025-01-20 21:25:33 +08:00
/* file name: insertionSort.c */
/* <20><><EFBFBD>J<EFBFBD>Ƨ<EFBFBD> */
#include <stdio.h>
void insertion_sort(int[], int);
void printDashLine(void);
int main()
{
int data[20];
int size = 0, i;
printf("\n<>п<EFBFBD><D0BF>J<EFBFBD><4A><EFBFBD><EFBFBD>(<28><><EFBFBD>J 0 <20><><EFBFBD>ܵ<EFBFBD><DCB5><EFBFBD>): ");
/* <20>n<EFBFBD>D<EFBFBD><44><EFBFBD>J<EFBFBD>Ʀr<C6A6><72><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>J<EFBFBD>Ʀr<C6A6><72> 0 */
do {
scanf("%d", &data[size]);
} while(data[size++] != 0);
printf("<22><><EFBFBD>ƧǪ<C6A7><C7AA><EFBFBD><EFBFBD><EFBFBD> : ");
for (i = 0; i < size-1; i++)
printf("%d ", data[i]);
printf("\n");
printDashLine();
insertion_sort(data, --size);
printDashLine();
printf("<22>Ѥp<D1A4>ܤj<DCA4>Ƨǫ᪺<C7AB><E1AABA><EFBFBD><EFBFBD>: ");
for (i = 0; i < size; i++)
printf("%d ", data[i]);
printf("\n");
return 0;
}
void insertion_sort(int data[], int size)
{
int base, compare, temp, i;
for (base = 0; base < size; base++) {
/* <20>N<EFBFBD><4E><EFBFBD><EFBFBD><EFBFBD>ƻP<C6BB><50><EFBFBD>󥦫e<F3A5A6AB><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƥ<EFBFBD><C6A4><EFBFBD><EFBFBD>C<EFBFBD><43><EFBFBD>X<EFBFBD><58><EFBFBD>J<EFBFBD><4A><EFBFBD>m */
temp = data[base];
compare = base;
printf("<22>[<5B>J %d\n", temp);
while (compare > 0 && data[compare-1] > temp) {
data[compare] = data[compare-1];
compare--;
}
data[compare] = temp;
printf("#%d PASS : ", base+1);
for (i = 0; i <= base; i++)
printf("%5d ", data[i]);
printf("\n\n");
}
}
void printDashLine()
{
for (int i = 0; i < 40; i++)
printf("-");
printf("\n");
}