-1
std::vector<unsigned int> numbers;
这就是充满数字和需求不使用任何INT变量被quickSorted - 仅unsigned int类型是允许的。
当我将所有“int”转换为“unsigned int” 时,由于0-1情况,所有我见过的quickSort示例中断。
编辑:这里是一个例子
void quickSort(std::vector<unsigned int> &numbers, unsigned int left, unsigned int right) {
unsigned int i = left, j = right;
unsigned int tmp;
unsigned int pivot = numbers.size()/2;
/* partition */
while (i <= j) {
while (numbers[i] < pivot)
i++;
while (numbers[j] > pivot)
j--;
if (i <= j) {
tmp = numbers[i];
numbers[i] = numbers[j];
numbers[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(numbers, left, j);
if (i < right)
quickSort(numbers, i, right);
}
的修改的版本:http://diogopinho.hubpages.com/hub/easy-quicksort-with-examples
实施例以上的段错误,因为j--;成为一个庞大的数字,并且(我< = j)保持为真。不能看到如何解决它。
任何人都知道如何使用unsigned int来实现quickSort?
如果您看到错误来自哪里,您应该可以自己解决问题。没有看到它就很难猜测你的代码。 – dasblinkenlight
这里是我如何做到这一点:1.获得一个C++ stdlib实现,其中'std :: sort'被实现为一个快速排序; 2.'std :: sort(numbers.begin(),numbers.end());' – 2014-01-28 18:16:41
什么是0-1情况?显示您无法解决如何更换的特定代码。我不明白为什么QuickSort实现会在任何地方使用负数。 –