/**
* 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 ...