【算法与数据结构】一道检测inversion count的初级算法
(轉載請注明出處:http://blog.csdn.net/buptgshengod)
1.題目? ??
? ? ? ?這是一道檢測inversion count的算法。它將檢測輸入序列中反序輸入的個數,即檢測其中有幾對A[i] > A[j], i < j
比如輸入4,3,2,1,輸出應該為3+2+1=6.。 因為:
1. ?4比3,2,1大,但4在輸入序列中是第一位,比3,2,1的index都小
2. ?3比2,1大
3. ?2比1大
2.代碼部分
/*
?*
解:用冒泡法將序列從小到大排序,計算一共移動多少位,就有幾個這樣的序列對。時間復雜度:O(n2)
?*/
public class Test {
?public static void main(String[] args){
int i,j;
int t;
int number=0;
final int n=4;
int[] list = new int[n];
?
System.out.println("隨機產生數列");
for(i=0;i<n;i++){
list[i]=(int)( Math.random()*100);
? ? System.out.print(list[i]+",");
}
?
?
for(i=0;i<n-1;i++){
for(j=0;j<n-1;j++){
if(list[j+1]>=list[j]){
?
}
else{
t=list[j+1];
list[j+1]=list[j];
list[j]=t;
number++;
}
}
}
System.out.println();?
System.out.println("有 "+number+" 對A[i] > A[j], i < j");?
?
?}
}
總結
以上是生活随笔為你收集整理的【算法与数据结构】一道检测inversion count的初级算法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【算法与数据结构】最大子序列和问题
- 下一篇: 【算法与数据结构】中缀表达式转为后缀表达