数组的合并排序(不用排序法)

随机产生两个5个元素的数组并对其进行排序,然后把这两个数组进行合并,并且合并后的数组也是有序的.(注;不能采用排序的方法)

程序代码如下:

              

#import <Foundation/Foundation.h>


int main(int argc, const char * argv[])

{


    int count = 0,y = 0,count1 = 0;

    int a[5] = {};

    int b[5] = {};

    int c[10] = {};

    printf("随机产生的a[]:");

    for (int i = 0; i < 5; i++) {

        a[i] = arc4random() % 6 + 5;

        printf("%d ",a[i]);

    }//随机产生一个[5,10]5个元素

    for (int j = 0; j < 5 - 1; j++) {

        for (int k = 0; k < 5 - 1 - j; k++) {

            if (a[k] > a[k + 1]) {

                int temp = a[k];

                a[k] = a[k + 1];

                a[k + 1] = temp;

            }

        }

    }//对这5个元素进行排序

    printf("\n");

    printf("排好序的a[]:");

    for (int i = 0; i < 5; i++) {

        printf("%d ",a[i]);//输出一个有序的数组

    }

    printf("\n");

    printf("随机产生的b[]:");

    for (int i = 0; i < 5; i++) {

        b[i] = arc4random() % 6 + 5;

        printf("%d ",b[i]);

    }//随机产生一个[5,10]5个元素

    for (int j = 0; j < 5 - 1; j++) {

        for (int k = 0; k < 5 - 1 - j; k++) {

            if (b[k] > b[k + 1]) {

                int temp = b[k];

                b[k] = b[k + 1];

                b[k + 1] = temp;

            }

        }

    }//对这5个元素进行排序

    printf("\n");

    printf("排好序的b[]:");

    for (int k = 0; k < 5; k++) {

        printf("%d ",b[k]);

    }//输出一个有序的数组

    printf("\n");

    for (int i = 0; i < 5; i++) {

        for (int k = 0; k < 5; k++) {

            if (a[i] >= b[k]) {

                count++;//条件满足时下标加一(a[]中元素对b[]中元素进行比较)

            }

        }

        y = i + count;//对该元素在c[]中下表进行赋值

        c[i + count] = a[i];

        count = 0;

    }//

    for (int i = 0; i < 5; i++) {

        for (int k = 0; k < 5; k++) {

            if (b[i] > a[k]) {

                count1++;//条件满足时下标加一(b[]中元素对a[]中元素进行比较)

            }

        }

        y = i + count1;//对该元素在c[]中下表进行赋值

        c[i + count1] = b[i];

        count1 = 0;

    }//

    printf("合并并排好序的数组为:");

    for (int i = 0; i < 10; i++) {

        printf("%d ",c[i]);//输出c[]中元素

    }

    printf("\n");

    return 0;


    }




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值