我有这个冒泡排序算法,可以对“arr1”进行排序。
static int yearAscDes(int value)`
{
if (value == 0)
{
int[] arr1 = { 1930, 1931, 2016, 2014, 2012 };
int temp1 = 0;
for (int i1 = 0; i1 < arr1.Length; i1++)
{
for (int j1 = 0; j1 < arr1.Length - 1; j1++)
{
if (arr1[j1] < arr1[j1 + 1])
{
temp1 = arr1[j1 + 1];
arr1[j1 + 1] = arr1[j1];
arr1[j1] = temp1;
}
}
}
for (int i1 = 0; i1 < arr1.Length; i1++)
{
Console.Write(arr1[i1] + " \n");
}
return 0;
}
我想使用这种算法对3种不同的数组进行排序,并将它们相互比较。
例如。
int[] arr1 = {1930, 1931, 2016, 2014, 2012};
string[] Months = {"Jan", "March", "Dec", "May", "Sept"};
int[] Num = {10, 5, 1, 3, 12};
如果我有这些数组并按升序排序arr1,我希望结果如下:
结果:
arr1 Months Num
2016年12月1日
2014年5月3日
2012年9月12日
1931年3月5日
1930年1月10日
答案 0 :(得分:4)
如果你能逃脱它,你应该只使用1个DateTime
DateTime[] dt = {new DateTime(1930, 1, 10), new DateTime(1931, 3, 5) /*...*/};
如果由于某种原因你不能这样做,因为这是家庭作业,那么下一个最好的事情就是让自己的班级有一年,一个月和一天,并且包括一个比较的方法您。
答案 1 :(得分:0)
如果您有兴趣使这对您的工作或辅助项目有用,我建议您使用DateTime
。它将包含您关注的所有内容以及更多内容。你也可以在数组中Sort()
或.orderBy(..)
。
但是如果你对你的东西的实际实现感兴趣,为了练习,我们必须有几个假设。
因此,您应该使用2d数组或KeyValue对数组。一个将是你的年份,另一个将保留一个初始索引 然后,一旦完成对年份数组的排序,您可以查看年份值的初始索引,并获取该索引表单数组Months和Number of Days的元素。
另一个想法:
您可以按原样保留3个数组,但是当您对Years数组执行swap
索引时,请对其他两个数组进行交换。只需确保您只使用来自Years数组的游泳检查条件。这样,当Years数组被排序时,您还将根据Years数组索引对其他两个数组进行排序。
你的代码:
if (arr1[j1] < arr1[j1 + 1])
{
temp1 = arr1[j1 + 1];
arr1[j1 + 1] = arr1[j1];
arr1[j1] = temp1;
}
应该像这样
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;
}