注意開始時不合法判斷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)
;}
注意:j=mid+1;而不是mid; if(l < r)而不是加r;1.上面的if(i>j) return;不能少了,否則會出現陣列越界;
2.如果在條件語句**現複製=,會出現記憶體超限; 書寫失誤;
3. 如果在內層迴圈while(itemp)和while(i;快排寫了千萬遍,長時間不寫,錯誤層出不窮;
4.如果**執行超時或者進入死迴圈,最可能出現情況為:迴圈或條件判斷是將寫成=、迴圈沒有修改i或者將i往相反方向修改==;
5.如果if(i == 1)寫成了if(i=1)不管怎麼i為何值,都會執行if語句;
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;注意內層迴圈交換索引均為j,j+1;注意兩個函式傳入的都是引用;
一直檢測不出問題,原來是merge函式少了引用;
#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。如下面的有兩個版本的...