修正错误的插入排序
错误版
void InsertSort(vector<int>& nums)
{for (int i = 0; i < nums.size()-1; ++i){int end = i;int t = nums[end + 1];while (end >= 0){if (nums[end+1] < nums[end]) nums[end + 1] = nums[end];else break;--end;}nums[end + 1] = t;}
}
无法得到正确结果。
vector<int> arr{ 5, 2, 4, 6, 1, 3 };
调试时候发现到1的时候,1倍保存到了t中,但在if比较时候没有用到t,无法将1移到最前面。
从而无法得到最终结果。
正确版
void InsertSort(vector<int>& nums)
{for (int i = 0; i < nums.size()-1; ++i){int end = i;int t = nums[end + 1];while (end >= 0){if (t < nums[end]) nums[end + 1] = nums[end];else break;--end;}nums[end + 1] = t;}
}