求解这个问题,用C语言
问题描述:
2.输入一个正整数n(50<=n<=100),使用随机数函数生成n个整数,并分别用
选择排序法和曾泡排序法将这n个整数按照从大到小的次序排列
答
供参考:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 101
void sort_bb(int *a,int n)//冒泡排序 从大到小
{
int i, j, t;
for(i=0;i<n-1;i++){
for(j=0;j<n-i-1;j++)
if (a[j] < a[j + 1])
{
t = a[j]; a[j] = a[j + 1]; a[j + 1] = t;
}
}
}
void sort_sel(int* a, int n)//选择排序 从小到大
{
int i, j, k, t;
for (i = 0; i < n - 1; i++)
{
k = i;
for (j = i + 1; j < n; j++)
{
if (a[k] > a[j])
k = j;
}
if (k != i)
{
t = a[k]; a[k] = a[i]; a[i] = t;
}
}
}
void print(int* a,int n)
{
int i;
for (i = 0; i < n; i++)
printf("%c%d", i == 0 ? '\r' : ' ', a[i]);
printf("\n");
}
int main()
{
int a[N], i, n;
srand((unsigned int)time(NULL));
scanf("%d", &n);
if (n < 50 || n>100) return 1;
for (i = 0; i < n; i++)
a[i] = rand() % n + 1;
sort_bb(a, n);
print(a, n);
sort_sel(a, n);
print(a, n);
return 0;
}