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