演算法導論第二章mergesort的C 實現

2021-07-01 19:18:21 字數 1484 閱讀 7374

之前在merge這段函式

for (int k = p; k <= r; k++)

之前寫成k

設定哨兵的

#include "stdafx.h"  

#include using std::cout;

using std::cin;

using std::endl;

const int maxval = 10000 + 5;

const int maxlength = 20;

void mergesort(int a, int, int);

void merge(int a, int, int, int);

int main();

mergesort(a, 0, 12); // 此處傳入引數 為 陣列首位址,陣列首元素的下標,陣列最後乙個元素的下標

for (size_t i = 0; i < 13; i++)

cout << endl;

return 0;

}void mergesort(int a, int p, int r)

}void merge(int a, int p, int q, int r)

for (size_t j = 0; j < n2; j++)

size_t i = 0;

size_t j = 0;

for (int k = p; k <= r; k++)

else

}}

根據2.3-2重寫不使用哨兵,而是一旦l或r陣列的所有元素複製回a後立刻停止,然後將另乙個陣列餘下的部分複製回a

#include "stdafx.h"

#include using std::cout;

using std::cin;

using std::endl;

const int maxval = 10000 + 5;

const int maxlength = 2000+5;

void mergesort(int a, int ,int );

void merge(int a, int, int, int);

int main()

mergesort(a, 0, 1998); // 此處傳入的長度引數 為 陣列長度-1

for (size_t i = 0; i < 1998;i++)

cout << endl;

return 0;

}void mergesort(int a, int p, int r)

}void merge(int a, int p, int q, int r)

for (size_t j = 0; j < n2; j++)

size_t i = 0;

size_t j = 0;

for (int k = p; k <= r; k++)

else

if (i == n1 && j

演算法導論第二章

插入排序原始碼 1 include 2 include 3 4using namespace std 56 void insert sort inta 7 17 a i 1 key 18 19 2021 intmain 22view code 逆序輸出 1 include 2 include 3 4...

演算法導論 第二章作業

作業2.1 2 template void insert t a,int n a i 1 key 2.1 3 template void find t a,int n,t v if i 1 v nil 迴圈不變式 初始化 i 1,v還沒和任何a陣列中的元素比較,所以是 1,它為真。保持 如果j迴圈到...

演算法導論第二章筆記

這一章首先以乙個插入排序演算法開始,以此為切入點分析演算法。書上以偽 來介紹演算法,但是在這裡我基本上會用c語言實現一遍,並用自己的語言複述一遍演算法的思想。首先附上插入排序的具體實現。void insert sort eletype arr int start int end arr j 1 te...