用随机数函数产生一个有20个元素的整数数组,然后用分别用冒泡排序和插入排序对它进行从小到大的排序输出

如题所述

第1个回答  推荐于2017-05-31
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void maopao(int *a, int n) //冒泡排序
{
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n-1; j++)
{
if (a[j]>a[j + 1])
{
int tmp = a[j];
a[j] = a[j + 1];
a[j + 1] = tmp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%-3d", a[i]);
}
}
void charu(int *a, int n)//插入排序算法;
{
for (int i = 1; i < 10; i++)
{
int temp = a[i];
for (int j = i-1; j >= 0; j--)
{
if (temp>a[j])
{
a[j + 1] = temp;
break;
}
else
{
a[j + 1] = a[j];
if (j == 0)
a[j] = temp;
}
}
}
for (int i = 0; i < 10; i++)
{
printf("%-3d", a[i]);
}
}
void main()
{
int m;
time_t s;
srand((unsigned int)& s);
int *p = (int *)malloc(sizeof (int)* 20);//利用堆区空间;
printf("随机产生的10个数为;\n");
for (int i = 0; i < 10; i++)
{
p[i] = rand() % 100;
printf("%-3d", p[i]);
}
printf("\n你想选择1冒泡排序OR2插入排序?");
scanf("%d",&m);
if(m==1)
{
printf("\n冒泡排序后的顺序为:\n");
maopao(p, 10);
}
else
{
printf("\n插入排序后的顺序为:\n");
charu(p, 10);
}
free(p);
system("pause");
}本回答被提问者采纳
相似回答