求出一列數中的「逆序對」的個數;所謂「逆序對」就是指數的大小與其在序列中的順序相反的一對數;例 如:<3,4,2,1,3>中「逆序對」有<3,2>,<3,1>,<4,2>,<4,1>,<4,3>這5個;要求時間複雜度為o(nlogn);
#include
void printtherel(int i, int j);
void sort(int array[100], int end);
void gettherel(int front[50],int len1, int back[50], int len2);
void getresult(int bundary, int source[100], int low, int high);
void main()
/////
// 函式名 : getresult
// 功能描述 : 通過遞迴演算法實現數列逆序列的求解
// 引數 : int bundary 二分法中涉及的分界點
// 引數 : int source[100] 乙個待求序列
// 引數 : int low 序列的開始座標
// 引數 : int high 序列的最後座標
// 返回值 : void
/////
void getresult(int bundary, int source[100], int low, int high)
}///
//// 函式名 : gettherel
// 功能描述 : 得到已經分成兩半時的逆序對
// 引數 : int front[50] 前一部分的己排序序列
// 引數 : int len1 前乙個序列的長度
// 引數 : int back[50] 後一部分的已排序序列
// 引數 : int len2 後乙個序列的長度
// 返回值 : void
/////
void gettherel(int front[50], int len1, int back[50], int len2)
}///
//// 函式名 : printtherel
// 功能描述 : 格式列印
// 引數 : int i 引數1
// 引數 : int j 引數2
// 返回值 : void
/////
void printtherel(int i, int j)
輸入輸出舉例:
please enter the length:10
please enter the elements:9 8 7 6 5 4 3 2 1 0
<5, 0>
<6, 0>
<7, 0>
<8, 0>
<9, 0>
<5, 1>
<6, 1>
<7, 1>
<8, 1>
<9, 1>
<5, 2>
<6, 2>
<7, 2>
<8, 2>
<9, 2>
<5, 3>
<6, 3>
<7, 3>
<8, 3>
<9, 3>
<5, 4>
<6, 4>
<7, 4>
<8, 4>
<9, 4>
<7, 5>
<8, 5>
<9, 5>
<7, 6>
<8, 6>
<9, 6>
<8, 7>
<9, 7>
<9, 8>
<6, 5>
<3, 0>
<4, 0>
<3, 1>
<4, 1>
<3, 2>
<4, 2>
<4, 3>
<2, 0>
<2, 1>
<1, 0>
press any key to continue
「求一列數中的第二小的數」
問題 求一列數中的第二小的數 方法 分治法,二分法,每次保留最小的兩個資料 include include include float a 100 void two int i,int j,float fmin2,float fmin1 else if i j 1 if a i float seco...
C 中對ListView某一列進行重新整理
很簡單,listview.beginupdate for int i 0 i stringlist.length i 只對第三列進行重新整理 listview.endupdate items i subitems j text即為第i 1行的第j 1列的文字。需要注意的是重新整理的列事先應該有定義,...
MySql中增加一列
如果想在乙個已經建好的表中新增一列,可以用諸如 alter table table name add column new column name varchar 20 not null 這條語句會向已有的表中加入新的一列,這一列在表的最後一列位置。如果我們希望新增在指定的一列,可以用 alter ...