int[] indices;
double[] relevance;
indices = {5, 8, 3, 2}
relevance = {0.1234, 0.3567, 0.2254, 0.0005}
{2, 5, 3, 8}
有没有更时髦的方法来解决这个问题?
您可以创建一个同时包含相关性和索引的对象,并将该对象放在一个新列表中。现在,您可以根据相关性对列表进行排序,并获得相应的索引。
大概是这样的:
// Class holding relevance and index at the same time
public class RelevanceIndex {
private int index;
private double relevance;
...
}
// Create and populate a list of RelevanceIndex
List<RelevanceIndex> relevanceIndexes = new ArrayList<>();
for (int i = 0; i < indices.length; i++) {
RelevanceIndex relevanceIndex = new RelevanceIndex();
relevanceIndex.setIndex(indexes[i]);
relevanceIndex.setRelevance(relevances[i]);
relevanceIndexes.add(relevanceIndex);
}
...
// Sort relevanceIndexes by relevance using method sort of List
// (you need to define your Comparator or define RelevanceIndex as
// Comparable)
// Now you have the related indexes sorted. If necessary you can put them
// in a new sorted array
编辑:添加了此答案的完整实现
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class ArraySorting {
public static void main(String[] args) {
int[] indices = {5, 8, 3, 2};
double[] relevance = {0.1234, 0.3567, 0.2254, 0.0005};
ArraySorting app = new ArraySorting();
app.run(indices, relevance);
}
void run(int[] indices, double[] relevance) {
List<RelevanceIndex> relevanceIndices = getRelevanceIndices(indices, relevance);
System.out.println(relevanceIndices);
Collections.sort(relevanceIndices);
System.out.println(relevanceIndices);
}
List<RelevanceIndex> getRelevanceIndices(int[] indices, double[] relevance) {
List<RelevanceIndex> relevanceIndices = new ArrayList<>();
for (int i = 0; i < indices.length; i++) {
relevanceIndices.add(new RelevanceIndex(indices[i], relevance[i]));
}
return relevanceIndices;
}
class RelevanceIndex implements Comparable<RelevanceIndex> {
private int index;
private double relevance;
RelevanceIndex(int index, double relevance) {
this.index = index;
this.relevance = relevance;
}
@Override
public int compareTo(RelevanceIndex other) {
return Double.compare(this.relevance, other.relevance);
}
@Override
public String toString() {
return String.format("%s (%s)", index, relevance);
}
}
}
我想根据另一个数组(索引)的排序顺序迭代两个数组(A,B),在本例中是10、34、32、21。 为这里的坏例子道歉。我已经更新了索引数组以消除混乱。 预期投入产出 但是,如果我将最后一行末尾的indexes[s]更改为indexes[indexOrder.indexOf(s)]。排序将给出错误的结果。如果ArrayList的索引与其值相同,为什么indexOf(s)会给出与s不同的结果。
问题内容: 在PHP中可以做这样的事情吗?您将如何编写函数?这是一个例子。顺序是最重要的。 我想做类似的事情 因为最后我使用了foreach()并且它们的顺序不正确(因为我将值附加到需要正确顺序的字符串中,而且我事先也不知道所有的数组键/值)。 我看过PHP的内部数组函数,但似乎只能按字母或数字排序。 问题答案: 只需使用或即可。通过以给定的数组(按正确的顺序)开始并用实际数组中的数据覆盖/添加键
我有2个java数组 如果我按升序对int数组排序,它将是: 现在我想相应地对名称数组进行排序。输出应为: 我该如何维持一段关系?我见过这个链接(基于其他排序的数组排序数组),但它是针对js的
我有这两个数组,我需要按ID订购第二个数组,就像第一个数组一样 如何根据第一个值重新订购第二个?我尝试了这个想法,但只适用于简单数组:https://develike.com/en/articles/sorting-an-array-by-values-based-on-another-array-in-php 有序ID数组: 无序数组:
我想写一个时间O(n*lgk)的算法,将k个排序数组合并成一个排序数组,其中n是所有输入数组的元素总数。 你能告诉我怎么做吗? 编辑:我编写了以下算法: 你能告诉我这是否正确吗?