C#程序问题[将两个体量排序为一个]

本文关键字:排序 一个 两个 问题 程序 | 更新日期: 2023-09-27 18:30:02

我需要将两个数组排序为一个,但0000000发生在输出的中间。怎么了?找不到一个错误,是在泡沫中吗?这是代码

"ConsoleApplication5.vshost.exe"(CLR v4.0.30319:ConsoleApplication5.vshost.exe):已加载"C:''Windows''Microsoft.Net''assembly''GAC_MSIL''System.Data.DataDataSetExtensions''v4.0_4.0.0.0__b77a5c561934e089''System.Deta.Data.DetasetExtensions.dll"。已跳过加载符号。模块已优化,调试器选项"仅我的代码"已启用ConsoleApplication5.vshost.exe'(CLRv4.0.30119:ConsoleApplication5.vshost.exe):已加载"C:''Windows''Microsoft.Net''assembly''GAC_MSIL''Microsoft.CSharp''v4.0.0.0__b03f5f7f11d50a3a''Microsoft.CSharp.dll"。已跳过加载符号。模块已优化,调试器选项"仅我的代码"已启用ConsoleApplication5.vshost.exe'(CLRv4.0.30119:ConsoleApplication5.vshost.exe):已加载"C:''Windows''Microsoft.Net''assembly''GAC_32''System.Data''v4.0_4.0.0.0__b77a5c561934e089''System.Data.dll"。已跳过加载符号。模块已优化,调试器选项"仅我的代码"已启用ConsoleApplication5.vshost.exe'(CLRv4.0.30119:ConsoleApplication5.vshost.exe):已加载"C:''Windows''Microsoft.Net''assembly''GAC_MSIL''System.Xml''v4.0.0.0__b77a5c561934e089''System.Xml.dll"。已跳过加载符号。模块已优化,调试器选项"仅我的代码"已启用ConsoleApplication5.vshost.exe'(CLRv4.0.30119:ConsoleApplication5.vshost.exe):已加载"C:''Windows''Microsoft.Net''assembly''GAC_MSIL''mscorlib.resources''v4.0_4.0.0.0_ru_b77a5c561934e089''mscorlib.resources.dll"。模块是在没有符号的情况下构建的。线程0x1264已退出,返回代码259(0x103)。线程0xc4c已退出,代码为259(0x103)。线程0xdc4已退出,代码为0(0x0)。线程0x16f4具有已退出,代码为259(0x103)。'ConsoleApplication5.vshost.exe'(CLRv4.0.30119:ConsoleApplication5.vshost.exe):已加载'c:''users''vas''documents''visualstudio2013''Projects''ConsoleApplication5''ConsoleApplication5''bin''Debug''ConsoleApplication 5.exe。已加载符号。程序"[1112]ConsoleApplication5.vshost.exe:程序跟踪"已退出,代码为0(0x0)。程序'[1112]ConsoleApplication5.vshost.exe"已退出,代码为1073741510(0xc000013a)。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] array1 = new int[20];
            int[] array2 = new int[20];
            int[] array = new int[40];
            int k = 0;
            Random rnd = new Random();
            Console.WriteLine("Исходный массив №1:");
            for (int i = 0; i < 20; i++)
            {
                array1[i] = rnd.Next(-100, +100);
                Console.Write("{0} ", array1[i]);
            }
            Console.WriteLine();
            Console.WriteLine("Исходный массив №2:");
            for (int i = 0; i < 20; i++)
            {
                array2[i] = rnd.Next(-100, +100);
                Console.Write("{0} ", array2[i]);
            }
            Console.WriteLine();
            for (; k < 20; k++)
            {
                array[k] = array1[k];
            }
            for (; k > 20; k++)
            {
                array[k] = array2[k - 20];
            }
            Console.WriteLine("Отсортированный массив:");
            BubbleSort(ref array);
            for (int i = 0; i < 40; i++)
            {
                Console.Write("{0} ", array[i]);
            }
            Console.ReadKey();
        }
        static void BubbleSort(ref int[] A)
        {
            for (int i = 0; i < A.Length; i++)
            {
                for (int j = i + 1; j < A.Length; j++)
                {
                    if (A[j] < A[i])
                    {
                        var temp = A[i];
                        A[i] = A[j];
                        A[j] = temp;
                    }
                }
            }
        }
    }
}

C#程序问题[将两个体量排序为一个]

这应该是:

        for (int k = 0; k < 20; k++)
        {
            array[k] = array1[k];
        }
        for (int k = 0; k < 20; k++)
        {
            array[k + 20] = array2[k];
        }

你可以做

        for (int k = 0; k < 20; k++)
        {
            array[k] = array1[k];
            array[k + 20] = array2[k];
        }

但由于内存管道缓存,2个循环通常更快。