#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;
}
产生N个随机数,使用选择排序,对随机数进行排序
最新推荐文章于 2024-07-03 18:58:50 发布