我需要将两个数组排成一个,但0000000在输出中间发生。有什么问题? 无法找到一个错误,它在泡沫排序? 这是代码
' ConsoleApplication5.vshost.exe' (CLR v4.0.30319: ConsoleApplication5.vshost.exe):已加载 ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ System.Data.DataSetExtensions \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.DataSetExtensions.dll&#39 ;. 跳过加载符号。模块已优化并具有调试器选项 ' Just My Code'已启用。 ' ConsoleApplication5.vshost.exe' (CLR v4.0.30319:ConsoleApplication5.vshost.exe):已加载 ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ Microsoft.CSharp \ v4.0_4.0.0.0__b03f5f7f11d50a3a \ Microsoft.CSharp.dll&#39 ;. 跳过加载符号。模块已优化并具有调试器选项 ' Just My Code'已启用。 ' ConsoleApplication5.vshost.exe' (CLR v4.0.30319:ConsoleApplication5.vshost.exe):已加载 ' C:\的Windows \ Microsoft.Net \组件\ GAC_32 \ System.Data \ v4.0_4.0.0.0__b77a5c561934e089 \ System.Data.dll中&#39 ;. 跳过加载符号。模块已优化并具有调试器选项 ' Just My Code'已启用。 ' ConsoleApplication5.vshost.exe' (CLR v4.0.30319:ConsoleApplication5.vshost.exe):已加载 ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \的System.Xml \ v4.0_4.0.0.0__b77a5c561934e089 \ system.xml.dll的&#39 ;. 跳过加载符号。模块已优化并具有调试器选项 ' Just My Code'已启用。 ' ConsoleApplication5.vshost.exe' (CLR v4.0.30319:ConsoleApplication5.vshost.exe):已加载 ' C:\的Windows \ Microsoft.Net \组件\ GAC_MSIL \ mscorlib.resources \ v4.0_4.0.0.0_ru_b77a5c561934e089 \ mscorlib.resources.dll&#39 ;. 模块没有符号。线程0x1264已退出 代码259(0x103)。线程0xc4c已退出代码259(0x103)。 线程0xdc4已退出,代码为0(0x0)。线程0x16f4有 退出代码259(0x103)。 ' ConsoleApplication5.vshost.exe' (CLR v4.0.30319:ConsoleApplication5.vshost.exe):已加载 ' c:\ users \ vas \ documents \ visual studio 2013 \项目\ ConsoleApplication5 \ ConsoleApplication5 \ BIN \调试\ ConsoleApplication5.exe&#39 ;. 符号已加载。该程序' [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;
}
}
}
}
}
}
答案 0 :(得分:1)
这应该是:
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个循环通常更快。