#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#define N 100
#define U 1000
int data[N];
int comp_count = 0;
int swap_count = 0;
void add_data(int *data)
{
srand(time(NULL));
for(int i=0; i<N; ++i)
data[i] = rand() % U;
}
void show(int *data)
{
printf("隨機序列: ");
for(int i=0; i<N; ++i)
printf("%d\t",data[i]);
printf("\n");
}
void show_ok(int *data)
{
printf("選擇排序: ");
for(int i=0; i<N; ++i)
printf("%d\t",data[i]);
printf("\n總共比較次數: %d\n總共交換次數: %d\n", comp_count, swap_count);
}
void exchange(int *a, int *b)
{
int n = *a;
*a = *b;
*b = n;
swap_count++;
}
void selection(int *data)
{
for (int i=0; i<N-1; i++)
{
int min = i;
for (int j=i+1; j<N; j++)
{
comp_count++;
if(data[j] < data[min])
min = j;
}
exchange(&data[i], &data[min]);
}
}
int main()
{
add_data(data);
show(data);
selection(data);
show_ok(data);
return 0;
}