C语言两个数组里边有十个元素把两个合并成一个并排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言两个数组里边有十个元素把两个合并成一个并排序相关的知识,希望对你有一定的参考价值。

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define NUM 10

void paixu(int * array, int n)//选择排序法

int i, j, temp, pos;
for(i=0;i<n;i++)

pos = i;
for(j=i+1;j<n;j++) if(array[pos] > array[j]) pos = j;
if(pos != i) temp = array[pos]; array[pos] = array[i]; array[i] = temp;


void hebing(int * array, const int * arrA, int nA, const int * arrB, int nB)//合并数据,这个是并归排序的基本函数,里面加上递归调用就是并归排序

int pos = 0, posA = 0, posB = 0;
while(posA<nA && posB < nB)

if(arrA[posA] < arrB[posB]) array[pos++] = arrA[posA++];
else array[pos++] = arrB[posB++];

if(posA<nA) while(posA<nA) array[pos++] = arrA[posA++];
if(posB<nB) while(posB<nB) array[pos++] = arrB[posB++];


void print(int *a, int n)

int i;
for(i=0; i<n;i++)

printf("%6d", a[i]);
if(i%10 == 9) printf("\\n");



int main()

int a[NUM], b[NUM], c[NUM*2], i;

srand(time(NULL));
for(i=0;i<NUM;i++) a[i] = rand() & 0xF; b[i] = rand() & 0xF;//随机数作为输入
printf("原始数据:\\n");
print(a, NUM);
print(b, NUM);
paixu(a, NUM);
paixu(b, NUM);
printf("排序后的数据:\\n");
print(a, NUM);
print(b, NUM);
hebing(c, a, NUM, b, NUM);
printf("合并后的数据:\\n");
print(c, NUM*2);
return 0;
参考技术A #include <stdio.h>

#define N 10

int main( void )

int a[N], b[N],c[2*N];
int i, j, temp;

printf( "请输入数组a的值:\n");

for( i = 0; i < N; i++ )
scanf( "%d", &a[i] );

printf( "请输入数组b的值:\n");
for( i = 0; i < N; i++ )
scanf( "%d", &b[i] );

for( i = 0; i < N; i++ )
c[i] = a[i];
c[i+N] = b[i];


for(i = 0; i < 2 * N - 1; i++ )
for( j = i + 1; j < 2 * N; j++ )
if( c[i] > c[j] )
temp = c[i];
c[i] = c[j];
c[j] =temp;


printf( "a数组的各个元素为:\n" );
for( i = 0; i < N; i++ )
printf( "%d\t", a[i] );

printf( "\nb数组的各个元素为:\n" );
for( i = 0; i < N; i++ )
printf( "%d\t", b[i] );

printf( "\nc数组的各个元素为:\n" );
for( i = 0; i < 2 * N; i++ )
printf( "%d\t", c[i] );

return 0;
参考技术B #include<stdio.h>
#define SWAP(a,b) int swap = 0;swap=a; a=b; b=swap;
void sort_fun(int *in1, int *in2, int *out)

int i = 0;
int j = 0;
for (i=0; i<10; i++)//将两个数组合并为一个数组

out[j++] = in1[i];
out[j++] = in2[i];

for (i=0; i<19; i++)

for (j=i+1; j<20; j++)

if(out[i]<out[j])

SWAP(out[i],out[j]);//数组3排序




int main()

int a[10]=1,3,2,20,5,3,7,3,7,9;
int b[10]=2,4,2,5,1,0,8,5,3,5;
int c[20]=0;
int i,j;
sort_fun(a, b, c);
for(i=0; i<10; i++)

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

printf("\n");
for(i=0; i<10; i++)

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

printf("\n");
for(i=0; i<20; i++)

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

printf("\n");
return 0;

Python 实现把两个排好序的的列表合并成一个排序列表

列表是生序的

# -*- coding: utf-8 -*-

# 合并两个排序的数组


def merge_list(a, b):
    if not a:
        return b
    if not b:
        return a
    a_index = b_index = 0
    ret = []
    while a_index < len(a) and b_index < len(b):
        if a[a_index] <= b[b_index]:
            ret.append(a[a_index])
            a_index += 1
        else:
            ret.append(b[b_index])
            b_index += 1
    if a_index < len(a):
        ret.extend(a[a_index:])
    if b_index < len(b):
        ret.extend(b[b_index:])
    return ret


if __name__ == ‘__main__‘:
    a = [1, 2, 3, 5, 7, 9]
    b = [1, 2, 2, 4, 5, 6, 8, 10]
    print merge_list(a, b)

以上是关于C语言两个数组里边有十个元素把两个合并成一个并排序的主要内容,如果未能解决你的问题,请参考以下文章

Python语言编写程序,将两个整数a和b合并成一个整数放到c里面,并打印出来?

c++两个数组合并成一个新数组

Matlab中怎样把两个字符串合并成一个字符串?

Python 实现把两个排好序的的列表合并成一个排序列表

归并排序 and 快速排序

python 两个list合并成字典