求出一列數中的「逆序對」

2021-03-31 15:01:03 字數 2108 閱讀 4294

求出一列數中的「逆序對」的個數;所謂「逆序對」就是指數的大小與其在序列中的順序相反的一對數;例 如:<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 ...