0
我有一个ArrayList
大小为10^5。我想计算一行中的数字对Pi和Pj,其中Pi在该行中的Pj之前,并且Pi具有比Pj更大的值。合并排序解决任务
CODE
public void sort(ArrayList<Integer> finalarray, int size)
{
if(finalarray.size()<2) return ;
ArrayList<Integer> right = new ArrayList<>();
ArrayList<Integer> left = new ArrayList<>();
int mid = finalarray.size()/2;
for(int i=0;i<mid;i++) left.add(finalarray.get(i));
for(int j=mid;j<size;j++) right.add(finalarray.get(j));
sort(left, left.size());
sort(right, right.size());
int l=0, r=0 , m =0;
int temp=-1;
while(l< left.size() && r< right.size())
{
if(left.get(l)> right.get(r))
{
finalarray.set(m, right.get(r));
if(temp!=l)
answer+=r+1;
if(temp==l)
answer++;
r++;
temp=l;
}
else
{
finalarray.set(m, left.get(l));
l++;
}
m++;
}
while(l< left.size())
{
finalarray.set(m, left.get(l));
l++;
m++;
answer+=right.size();
}
while(r< right.size())
{
finalarray.set(m, right.get(r));
r++;
m++;
}
}
实施例: 阵列:1,2,4,第7,5,3
答案:4
(4和3),(7和5),( 7和3),(5和3)。
我正在使用合并排序,但我没有得到正确的答案。
请解释我做错了什么。
答案如何不正确? – 2014-08-27 07:49:11
但我没有得到正确的答案 – Singapore 2014-08-27 07:51:47
你会得到什么答案?如果你需要帮助,你将不得不提供更多细节。 – 2014-08-27 07:59:11