了方法2,方法2在pat上面可以提交成功,但無法在vs2013上通過編譯,原因在於
有以下幾點需要注意
1:sort(a,a+5) (記憶方式 a+n就是在第n個數後面畫乙個豎線(a=a+0,所以在第0個數後面畫豎線))
|1 2 3 4 5| 6 7
如果a是vector的話 一般表示為sort(a.begin() , a.begin() + n)
2:pow(2,x) 這種表達方式不好(double型別),不如使用k=1,k=2*k一直迴圈
3:c++給函式傳陣列引數(方法2)
4: c++給函式傳vector引數(方法3) 參考
本文採用引用的方法,見下圖
方法1:
#include#include#includeusing namespace std;
int main()
for (int i = 0; i> b[i];
} int i, j;
for (i = 0; i= b[i]; i++); //i記錄了第乙個相同元素的位置
for (j = i + 1; j方法2 (將其寫成兩個子函式)
#include#include//#includeusing namespace std;
int inser(int n,int *chushi,int *temp,int flag) //如果是這種演算法 就輸出flag=0 如果不是,保持flag=1
for(int i=0;i>temp[i];
} int flag = 1;
int chushi2[n],temp2[n];
for(int i=0;i方法3(改陣列為向量容器)
#include#include#includeusing namespace std;
int inser(int n, vector&chushi, vector&temp, int flag) //如果是這種演算法 就輸出flag=0 如果不是,保持flag=1
for (int i = 0; i> temp;
v2.push_back(temp);
v4.push_back(temp);
} int flag = 1;
flag = inser(n, v1, v2, flag);
merge(n, v3, v4, flag); /
//for (int j = 0; j
system("pause");
return 0;
}
1035 插入與歸併(25 分)
根據維基百科的定義 插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。歸併排序進行如下迭代操作 首先將原始序列看成 n 個只包含 1 個元素的有序子串行,然後每次迭代歸併兩個相鄰的有序子串...
1035 插入與歸併 (25 分)
1035 插入與歸併 25 分 根據維基百科的定義 插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。歸併排序進行如下迭代操作 首先將原始序列看成 n 個只包含 1 個元素的有序子串行,然...
1035 插入與歸併 25 分
根據維基百科的定義 插入排序是迭代演算法,逐一獲得輸入資料,逐步產生有序的輸出序列。每步迭代中,演算法從輸入序列中取出一元素,將之插入有序序列中正確的位置。如此迭代直到全部元素有序。歸併排序進行如下迭代操作 首先將原始序列看成 n 個只包含 1 個元素的有序子串行,然後每次迭代歸併兩個相鄰的有序子串...