c语言 在线大学生求解

用冒泡法和选择法对一个整数数组进行排序,数组要求包含10个以上元素,由用户输入。排序算法要求用函数实现

冒泡:

#include<stdio.h>
int main()
{
    int i,j,t,a[10]={5,4,8,3,6,9,7,222,64,88};
     
    //排序
    for(i=1;i<10;i++)        //外循环控制排序趟数,n个数排n-1趟
    {
        for(j=0;j<10-1;j++)      //内循环每趟比较的次数,第j趟比较n-i次
        {
            if(a[j]>a[j+1])     //相邻元素比较,逆序则交换
            {
                t=a[j];
                a[j]=a[j+1];
                a[j+1]=t;
            }
        }
    }
 
    printf("排序后的结果是:\n");
    for(i=0;i<10;i++)
    {
        printf("%d  ",a[i]);
    }
    printf("\n");
 
    return 0;
}

选择法

#include<stdio.h>
int main()
{
    int i,j,min,t,a[10]={2,4,8,3,6,9,7,222,64,88};
 
    printf("排序前的序列为:\n");
    for(i=0;i<10;i++)            //输出排序前的序列
    {
        printf("%5d",a[i]);
    }
    printf("\n");
    
    for(i=0;i<9;i++)
    {
        min=i;                    //把每次循环的第一个数作为最小值
        for(j=i+1;j<10;j++)
        {
            if(a[min]>a[j])
                min=j;            //交换
        }
        if(min!=i)                //说明第一个数不是最小数,所以将a[i+1]~a[10]中最小值与a[i]对换
        {
            t=a[min];
            a[min]=a[i];
            a[i]=t;
        }
    }
    printf("排序后的序列为:\n");
    for(i=0;i<10;i++)            //输出排序后的序列
        printf("%5d",a[i]);
    printf("\n");
    
    return 0;
}

void sel(int a[],int n)
{
    for(int i=0;i<n-1;i++)
    {
        int k= i;
        for(int j=i+1;j<n;j++)
              if(a[k] > a[j])
                  k = j;
          if(k != i)
          {
              int t = a[k];
              a[k] = a[i];
              a[i] = t;
          }
    }
}
void mp(int a[],int n)
{
    for(int i=0;i<n-1;i++)
        for(int j=0;j<n-i-1;j++)
        {
            if(a[j] < a[j+1])
            {
                int t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
        }
}
int main()
{
    int a[1000],n;
    scanf("%d",&n);
    for(int i=0;i<n;i++)
        scanf("%d",&a[i]);
    sel(a,n);
    for(int i=0;i<n;i++)
        printf("%d ",a[i]);
    printf("\n");
    mp(a,n);
    for(int i=0;i<n;i++)
        printf("%d ",a[i]); 
}
#incldue <bits/stdc++.h>

using namespace std;

int n;
int arr[15];

int main(){
 cin >> n;
 for (int i = 1;i <= n;i++) cin >> arr[i];
 sort(arr + 1,arr + 1 + n);
 for (int i = 1;i <= n;i++) cout << arr[i] << " ";
}
#include <stdio.h>
#define MAXSIZE 100

void Sort(int *a, int len)
{
    int i, j;
    int tmp;
    for (i = 0; i < len; i++)
    {
        for (j = 0; j < len - i - 1; j++)
        {
            if (a[j] > a[j + 1])
            {
                tmp = a[j];
                a[j] = a[j + 1];
                a[j + 1] = tmp;
            }
        }
    }
}

int main()
{
    int a[MAXSIZE];
    int i, n;
    printf("输入待排序个数:");
    scanf("%d", &n);
    printf("输入待排序元素:");
    for (i = 0; i < n; i++)
    {
        scanf("%d", &a[i]);
    }
    printf("排序前元素:");
    for (i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
    Sort(a, n);
    printf("排序后元素:");
    for (i = 0; i < n; i++)
    {
        printf("%d ", a[i]);
    }
    return 0;
}