poj1007 穩定排序 歸併排序

2021-06-20 22:18:33 字數 1071 閱讀 2405

/**

* poj1007 穩定排序 歸併排序

* 正好在這裡重新複習一下歸併排序

* 歸併排序的思想是,把乙個序列二分拆成前半段和後半段,遞迴深入的方法,使得前後的兩個半段序列都是有序的(mergesort函式)

* 然後將兩個序列合併成乙個有序的序列(merge函式)

* 合併時,先給前後兩個序列都做乙個副本,然後向原來兩個序列的空間內依次填充兩個子串行中更小的乙個

* 如果填充的值來自右邊的子串行,那麼就有逆序數產生,逆序數統計時自增(左子串行剩餘的元素個數)

* 為什麼這麼自增一畫就知道啦

*/#include #include #include #include using namespace std;

const int max_len = 51;

const int max_num = 101;

char dna[max_num][max_len];

char tmp[max_len];

struct point p[max_num];

int cmp(const void* a, const void* b)

//idx公升序

else

}//將data[l]....data[q] 和data[q+1]...data[r]兩個有序序列合併成乙個有序序列

void merge(char data,int l,int q,int r,int& count)

for(int i=0;iint k = l,idx1=0,idx2=0;

while(idx1else

}//如果剩下的都是左邊的,逆序數就都已經統計完了,不用再加了

while(idx1//如果剩下的都是右邊的,好像也不用統計了,因為idx1 = len1了

while(idx2}void mergesort(char data,int l,int r,int& count)

}int main()

qsort(p,m,sizeof(point),cmp);

for(int i=0;ireturn 0;

}

poj1007 逆序數 排序

非常簡單的逆序數 排序。這裡對sort和qsort徹底的弄明白了。sort是c 裡面的,要包含algorithm標頭檔案,cmp函式要返回bool值。qsort是包含在stdlib.h這個標頭檔案裡面,cmp函式比較特殊cmp const void a,const void b 一般返回int.我用...

穩定排序之歸併排序

今天學習遞迴,看了教程居然一下子沒看懂,發現不好的教 是毀人,特此記錄一下好的教程。首先要介紹如何將兩個已排序的陣列合併,因為這是遞迴排序的核心思想 首先要介紹如何將兩個已排序的陣列合併,因為這是遞迴排序的核心思想 void merge array int a,int first,int mid,i...

穩定排序(插入排序 氣泡排序 歸併排序)

插入排序 我們可以從字面意思去理解這個排序方式,可以把序列前後分為兩部分有序序列和待排序列,不斷的在待排序列中取出乙個數按某規則 從大到小或者從小到大 插入到有序序列中,直到待排序列都完成排序結束。演示 視覺化演算法 推薦 ps 本圖出處為此 c語言 實現 void insert sort int ...