之前在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...