实现数组从大到小或从小到大排列(冒泡排序)

实现数组从大到小或从小到大排列(冒泡排序)

题目

编写一个程序,输入两个包含5个数值的数值,先将两个数组升序(从小到大)排列,然后将两个素组合并成一个升序素组:

题目分析

1、 通过题目我们已知要求排列数组中的数据,那么这里用到冒泡排序的方法,基本思想是通过控制数组下标控制数组元素前后比较,例如:arr[0]=5,arr[1]=6;如果arr[0]>arr[1],就通过临时变量temp交换arr[0]和arr[1]的值即可。
程序应用的冒泡排序:

 for (int i = 0; i < n; i++)
        for (int j = 0; j < n - 1; j++)
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }

2、合并数组这里使用的比较简单,for循环加if判断,当变量i<5的时候就把数组1的数值值赋到新数组0-4的位置,当i>5时,就把数组2的数值赋值到下标5-9上,因为i在条件内始终++,当i=5时即需要减去5,arr2[i-5]才表示arr2中的第一位元素:
程序应用的部分:

 for (int i = 0; i < 10; i++)
        if (i < 5)
            allarr[i] = arr1[i];
        else
            allarr[i] = arr2[i - 5];

3、程序完整代码

#include <stdio.h>
#define N 10
int numlist(int arr[5], int n)
{
    int temp;
    printf("从小到大排列为:\n");
    for (int i = 0; i < n; i++)
        for (int j = 0; j < n - 1; j++)
            if (arr[j] > arr[j + 1])
            {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
    for (int i = 0; i < n; i++)
    {
        printf("%d ", arr[i]);
    }

    printf("\n");
}
int allnum(int arr1[], int arr2[])
{
    int allarr[N];
    for (int i = 0; i < 10; i++)
        if (i < 5)
            allarr[i] = arr1[i];
        else
            allarr[i] = arr2[i - 5];
    printf("\n合并数组之后的排序为:\n");
    numlist(allarr, N);
}
int main()
{
    int arr1[5];
    int arr2[5];
    printf("请输入第一个数组的五个值:\n");
    for (int i = 0; i < 5; i++)
        scanf("%d", &arr1[i]);
    printf("请输入第二个数组的五个值:\n");
    for (int i = 0; i < 5; i++)
        scanf("%d", &arr2[i]);
     //下面输入函数调用,写的很简单,所以就没有注释啦
    numlist(arr1, 5);
    numlist(arr2, 5);
    allnum(arr1, arr2);
}

4、实验截图:
在这里插入图片描述

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值