Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#使用冒泡排序对3个数组进行排序_C#_Sorting_Bubble Sort - Fatal编程技术网

C#使用冒泡排序对3个数组进行排序

C#使用冒泡排序对3个数组进行排序,c#,sorting,bubble-sort,C#,Sorting,Bubble Sort,我有一个对“arr1”进行排序的冒泡排序算法 如果我有这些数组并按升序对arr1排序,我希望结果如下所示: 结果: arr1个月数 2016年12月1日 2014年5月3日 2012年9月12日 1931年3月5日 1930年1月10日如果你能侥幸逃脱,你应该只使用一个日期时间数组 DateTime[] dt = {new DateTime(1930, 1, 10), new DateTime(1931, 3, 5) /*...*/}; 如果你因为某种原因不能这样做,因为这是家庭作业,那么下

我有一个对“arr1”进行排序的冒泡排序算法

如果我有这些数组并按升序对arr1排序,我希望结果如下所示:

结果:

arr1个月数

2016年12月1日

2014年5月3日

2012年9月12日

1931年3月5日


1930年1月10日

如果你能侥幸逃脱,你应该只使用一个
日期时间数组

DateTime[] dt = {new DateTime(1930, 1, 10), new DateTime(1931, 3, 5) /*...*/};


如果你因为某种原因不能这样做,因为这是家庭作业,那么下一个最好的办法就是让你自己的课程有一年、一个月和一天,并包括一个为你做比较的方法

如果你能侥幸逃脱,你应该只使用一个
DateTime

DateTime[] dt = {new DateTime(1930, 1, 10), new DateTime(1931, 3, 5) /*...*/};


如果你因为某种原因不能这样做,因为这是家庭作业,那么下一个最好的办法就是让你自己的课程有一年、一个月和一天,并包括一个为你做比较的方法

如果您有兴趣将其用于您的工作或辅助项目,我建议使用
DateTime
。它会容纳你所关心的一切,还有更多。您还可以在数组中使用
Sort()
.orderBy(..)


但是如果你对你的事情的实际实施感兴趣,为了练习,我们必须有两个假设

  • 所有3个阵列的大小相同
  • 实际上,您只关心这些数组的初始索引,而不是对每个数组进行实际排序。这是从您的示例中派生出来的
因此,您应该使用2d数组,或者键值对数组。一个是你的年份,另一个是初始索引。
然后,对年数组进行排序后,可以查看年值的初始索引,并从月数组和日数组中获取该索引的元素

另一个想法是: 您可以保持这3个数组的原样,但当您交换年份索引数组的
时,请交换其他两个数组。只需确保您仅对“从年份游”数组使用检查条件。这样,当对Years数组进行排序时,您还将根据Years数组索引对其他两个数组进行排序。
您的代码:

if (arr1[j1] < arr1[j1 + 1])
{
    temp1 = arr1[j1 + 1];
    arr1[j1 + 1] = arr1[j1];
    arr1[j1] = temp1;
}
if(arr1[j1]
应该是这样的

if (arr1[j1] < arr1[j1 + 1])
{
    temp1 = arr1[j1 + 1];
    arr1[j1 + 1] = arr1[j1];
    arr1[j1] = temp1;

    tempMonths = months[j1 + 1]; 
    months[j1 + 1] = months[j1];
    months[j1] = tempMonths;

    tempDays = days[j1 + 1]; 
    days[j1 + 1] = days[j1];
    days[j1] = tempDays;
}
if(arr1[j1]
如果您有兴趣将其用于您的工作或辅助项目,我建议使用
DateTime
。它会容纳你所关心的一切,还有更多。您还可以在数组中使用
Sort()
.orderBy(..)


但是如果你对你的事情的实际实施感兴趣,为了练习,我们必须有两个假设

  • 所有3个阵列的大小相同
  • 实际上,您只关心这些数组的初始索引,而不是对每个数组进行实际排序。这是从您的示例中派生出来的
因此,您应该使用2d数组,或者键值对数组。一个是你的年份,另一个是初始索引。
然后,对年数组进行排序后,可以查看年值的初始索引,并从月数组和日数组中获取该索引的元素

另一个想法是: 您可以保持这3个数组的原样,但当您交换年份索引数组的
时,请交换其他两个数组。只需确保您仅对“从年份游”数组使用检查条件。这样,当对Years数组进行排序时,您还将根据Years数组索引对其他两个数组进行排序。
您的代码:

if (arr1[j1] < arr1[j1 + 1])
{
    temp1 = arr1[j1 + 1];
    arr1[j1 + 1] = arr1[j1];
    arr1[j1] = temp1;
}
if(arr1[j1]
应该是这样的

if (arr1[j1] < arr1[j1 + 1])
{
    temp1 = arr1[j1 + 1];
    arr1[j1 + 1] = arr1[j1];
    arr1[j1] = temp1;

    tempMonths = months[j1 + 1]; 
    months[j1 + 1] = months[j1];
    months[j1] = tempMonths;

    tempDays = days[j1 + 1]; 
    days[j1 + 1] = days[j1];
    days[j1] = tempDays;
}
if(arr1[j1]
为什么不使用1个
日期时间数组呢?
?尽管@SamIam这样说非常正确,但如果您必须坚持这种数据结构,当您说
arr1[j1+1]=arr1[j1]您是否也可以在那里添加
月份[j1+1]=月份[j1]
Num[j1+1]=Num[j1]
以及存储另外两个临时值
temp2=Months[j1+1]
temp3=Num[j1+1]
将一个日期拆分为3个数组对我来说真是违反直觉。您可以保存那个巨大的排序函数,然后按照@SamIam所说的去做。我确信这是一个赋值,为什么不使用一个
DateTime
数组呢?虽然@SamIam这样说非常正确,但如果您必须坚持这个数据结构,当您说
arr1[j1+1]=arr1[j1]您是否也可以在那里添加
月份[j1+1]=月份[j1]
Num[j1+1]=Num[j1]
以及存储另外两个临时值
temp2=Months[j1+1]
temp3=Num[j1+1]
将一个日期拆分为3个数组对我来说真是违反直觉。你可以保存这个巨大的排序函数,然后按照@SamIam所说的去做。我相信这是一个任务,