18 c 排序心得

2021-10-05 05:48:41 字數 1599 閱讀 9185

注意開始時不合法判斷if(i>=j) return;

三個while迴圈

void

quicksort

(vector<

int>

&data,

int left,

int right)

data[i]

=temp;

//print(data);

quicksort

(data,left,i-1)

;quicksort

(data,i+

1,right)

;}

注意:

1.上面的if(i>j) return;不能少了,否則會出現陣列越界;

2.如果在條件語句**現複製=,會出現記憶體超限; 書寫失誤;

3. 如果在內層迴圈while(itemp)和while(i;快排寫了千萬遍,長時間不寫,錯誤層出不窮;

4.如果**執行超時或者進入死迴圈,最可能出現情況為:迴圈或條件判斷是將寫成=、迴圈沒有修改i或者將i往相反方向修改==;

5.如果if(i == 1)寫成了if(i=1)不管怎麼i為何值,都會執行if語句;

j=mid+1;而不是mid; if(l < r)而不是加r;
int count=0;

void

mergesort

(vector<

int>

&data,

int l,

int mid,

int r)

}while

(i<=mid) temp.

push_back

(data[i++])

;while

(j<=r) temp.

push_back

(data[j++])

;for

(int k=

0;ksize()

;k++

) data[l++

]=temp[k];}

void

merge

(vector<

int>

& data,

int l ,

int r)

}

注意在:merge函式中不要忘記結束判斷if(l出入merger的r是vec.size()-1;

注意兩個函式傳入的都是引用;

一直檢測不出問題,原來是merge函式少了引用;

注意內層迴圈交換索引均為j,j+1;
#include

using

namespace std;

intmain()

;for

(int i=

0;i<

6;i++

)for

(int j=

0;j<

6-i-

1;j++

)for

(int i=

0;i<

6;i++

) cout<

}

18 C 基礎 函式指標

int p1 10 p1 是乙個陣列,含有 10 個指標的陣列 int p2 10 arr p2 是乙個指標,指向含有 10 個整數的陣列 bool pf const string const string pf 是乙個函式,該函式返回為bool指標的函式,即返回bool bool pf const...

18 C 友元函式

c 成員變數或者成員函式如果具有私有或者受保護屬性,客戶程式設計師是無法通過物件直接呼叫私有 受保護的部分 受保護的成員可以通過公有的成員函式暴露給客戶程式設計師,或者使用非成員函式 即友元函式暴露 include using namespace std class stack 公有屬性,成員函式暴...

18C 複習 SLT演算法

不變序列演算法 變值演算法 刪除演算法 變序演算法 排序演算法 有序區間演算法 數值演算法 用 判斷元素是否相等,或用 多出乙個型別引數 pred 和函式形參 pred op 通過表示式 op x,y 的返回值 ture false 來判斷x是否 等於 y,或者x是否 小於 y。如下面的有兩個版本的...