C言語の日常の質問

今日私が共有しているのは Niuke.com のトピックであり、リンクは以下の
順序でマージされています。

ここに画像の説明を挿入
この質問を行うには多くの方法があります。最も簡単な方法は、それらをマージしてから並べ替えを使用することです。今日は最も効率的な方法を使用します。アイデアは、2 つの配列の最初の項目を比較し、小さい方を出力することです。出力配列の最初と次の配列の添字が後方に移動してから比較されます。もう一方の配列の方が小さい場合は、その方の配列を最初に出力し、次にその配列の添字が後方に移動します。このようにして、2 つの配列は次のことができます。出力のために結合されます。

#include<stdio.h>
int main()
{
    
    
	int arr1[1000];
	int arr2[1000];
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	int i = 0;
	for (i = 0; i < n; i++)
	{
    
    
		scanf("%d ", &arr1[i]);
	}
	for (i = 0; i < m; i++)
	{
    
    
		scanf("%d ", &arr2[i]);
	}
	int j = 0;
	i = 0;
	while (i < n && j < m)
	{
    
    
		if (arr1[i] > arr2[j])
		{
    
    
			printf("%d ", arr2[j]);
			j++;
		}
		else
		{
    
    
			printf("%d ", arr1[i]);
			i++;

		}
	}
	if (i == n)
	{
    
    
		for (; j < m; j++)
		{
    
    
			printf("%d ", arr2[j]);
		}
	}
	else
	{
    
    
		for (; i < n; i++)
		{
    
    
			printf("%d ", arr1[i]);
		}
	}
	return 0;
}

これは今日のコード共有です、主にこのアイデアは大丈夫​​だと思うので共有しました、記事の品質は特に良くありません、ありがとう!

おすすめ

転載: blog.csdn.net/2301_76895050/article/details/132050615