C#使用冒泡排序对3个数组进行排序
我有一个对“arr1”进行排序的冒泡排序算法 如果我有这些数组并按升序对arr1排序,我希望结果如下所示: 结果: arr1个月数 2016年12月1日 2014年5月3日 2012年9月12日 1931年3月5日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) /*...*/}; 如果你因为某种原因不能这样做,因为这是家庭作业,那么下
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个阵列的大小相同
- 实际上,您只关心这些数组的初始索引,而不是对每个数组进行实际排序。这是从您的示例中派生出来的
然后,对年数组进行排序后,可以查看年值的初始索引,并从月数组和日数组中获取该索引的元素 另一个想法是: 您可以保持这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所说的去做。我相信这是一个任务,