求解这个问题,用C语言

求解这个问题,用C语言

问题描述:

img

    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;
}