C 1035 插入與歸併(25 分)

2021-08-27 03:49:50 字數 1599 閱讀 5660

了方法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 個元素的有序子串行,然後每次迭代歸併兩個相鄰的有序子串...