我想實現插入排序使用stl和向量。我想出了這個解決方案迄今:插入排序 - 處理空列表
void insertionSort(vector<int> &v, int splitIndex);
int main() {
//vector<int> x = {55,33,99,11,22,44};
//vector<int> x = {55};
//vector<int> x = {55,11};
vector<int> x;
insertionSort(x, 0);
printVector(x);
return 0; }
void insertionSort(vector<int> &v, int splitIndex) {
vector<int>::iterator right = v.begin() + splitIndex + 1;
if(right == v.end())
return;
vector<int>::iterator left = v.begin() + splitIndex;
while(*right < *left && right != v.begin()) {
iter_swap(right, left);
right--;
left--;
}
insertionSort(v, splitIndex+1); }
它的工作在所有情況下,除了空載體的情況下,因爲「正確」的指針將指向矢量限制之外。我知道它可以通過在開頭添加一個條件是固定的:
if(v.size() < 2) return;
但我不喜歡那朵條件將爲每個遞歸調用執行。
請指教。謝謝。
我想你可以簡單地檢查是否'splitIndex +1
JustRufus
在你嘗試[看看這裏的實現]之後(http://stackoverflow.com/questions/24650626/how-to-implement-classic-sorting-algorithms-in-modern-c) – PaulMcKenzie