当函数的 形参数组 和 全局数组 重名时,在此函数内对数组的操作并不会影响全局数组。所以说,若是全局变量就不要放进函数参数了。
问题来源:
vector<int> arr; void heapsort(vector<int> arr, int left, int right) { if (left >= right) return; for (int i = right; i >=0; i-=2) { int index = (i - 1) / 2; int sonleft = 2 * index + 1; int sonright = 2 * index + 2; if (sonright > right) sonright = sonleft; if (arr[index] < arr[sonright]) swap(arr[index], arr[sonright]); if (arr[index] < arr[sonleft]) swap(arr[index], arr[sonleft]); } swap(arr[0], arr[right]); heapsort(0, right - 1); }
这段代码中函数heapsort对arr的操作对全局arr不起作用,小问题好浪费时间啊。。。。。。。