#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 bubble(int *data)
{
for (int i=0; i<N-1; i++)
{
for (int j=0; j<N-1-i; j++)
{
comp_count++;
if (data[j] <= data[j+1])
continue;
exchange(&data[j], &data[j+1]);
}
}
}
int main(void)
{
add_data(data);
show(data);
bubble(data);
show_ok(data);
return 0;
}
产生N个随机数,使用冒泡排序,对随机数进行排序
最新推荐文章于 2022-11-04 21:00:00 发布