如果我有一个名称数组和一个单圈数组,我将如何链接这两个数组,以便我可以对时间进行排序并保留相关名称? 这就是两个数组的样子:
String[] names = { "Paul", "Dan", "Hayden", "Sam", "Pauline"};
int[] times = { 341, 273, 278, 329, 445 };
截至目前,我运行选择排序算法以获得最低时间到最高时间但我无法弄清楚如何保持paul与341连接。
我不想连接两个数组,我希望能够对时间数组进行排序,然后调用与特定时间相关联的名称。
答案 0 :(得分:1)
将数组中的时间数组和元素的交换位置排序在一起,这样当交换发生时它将保持时间和名称数组之间的链接,这里是程序,我按降序排序< / p>
public static void main(String[] args){
String[] names = { "Paul", "Dan", "Hayden", "Sam", "Pauline"};
int[] times = { 341, 273, 278, 329, 445 };
for(int outerIndex = 0; outerIndex < times.length; outerIndex++){
for(int innerIndex = outerIndex+1; innerIndex < times.length; innerIndex++){
if(times[outerIndex]<times[innerIndex]){
swap(outerIndex, innerIndex, names, times);
}
}
}
}
这里我在两个数组中交换元素位置:
public static void swap(int outerIndex, int innerIndex, String[] names, int[] times){
int tempTime;
String tempName;
tempTime = times[outerIndex];
tempName = names[outerIndex];
times[outerIndex] = times[innerIndex];
names[outerIndex] = names[innerIndex];
times[innerIndex] = tempTime;
names[innerIndex] = tempName;
}
<强>输入:强>
String [] names = {&#34; Paul&#34;,&#34; Dan&#34;,&#34; Hayden&#34;,&#34; Sam&#34;,&#34; Pauline& #34;};
int [] times = {341,273,278,329,445};
<强>输出:强>
String [] names = {&#34; Pauline&#34;,&#34; Paul&#34;,&#34; Sam&#34;,&#34; Hayden&#34;,&#34; Dan& #34;};
int [] times = {445,341,329,278,273};
答案 1 :(得分:0)
请与阵列室分类。例如
names[0] = "Paul"
times [0] = 341
类似的东西
答案 2 :(得分:0)
按原样保留名称和次数组,并使用包含其他两个索引的第三个数组:
String[] names = { "Paul", "Dan", "Hayden", "Sam", "Pauline"};
int[] times = { 341, 273, 278, 329, 445 };
int[] index = { 0, 1, 2, 3, 4};
在名称或次上运行排序算法(具体取决于您的排序方式)。运行算法时,通过索引数组访问次数组(例如):
times[index[x]]; // where x is whatever index you are on during your sort
当您发现需要交换两个项目时,请对索引数组执行交换操作:
swap(index[0], index[1]);
排序算法完成后,名称和次数组通过其数组位置保持关联,但如果您通过索引访问它们数组将按排序顺序访问。
P.S。我为你的学校工作感到肮脏:)