【发布时间】:2017-09-02 20:39:33
【问题描述】:
快速排序的交换功能。它给出了错误的输出。当我使用临时变量时,它会给出正确的输出。 这是测试仪:
void swap(int &a,int &b){
a=a+b;
b=a-b;
a=a-b;
}
这很好用:
void swap(int &a,int &b){
int temp=a;
a=b;
b=a;
}
我在快速排序算法的分区函数中将数组元素传递给这个函数。
【问题讨论】:
-
当您说“临时变量”时,您能详细说明一下吗?因为引用不能绑定到临时变量。这将导致未定义的行为,这可能会导致您看到的此类行为。请尝试创建Minimal, Complete, and Verifiable Example 并向我们展示。请花点时间read about how to ask good questions。
-
请提供上下文。你传递什么来得到正确或不正确的结果?
-
您的交换类型的一个问题是它可能下溢或溢出,这是未定义的行为。如果您需要交换功能,只需使用
std::swap并相信库实现者知道他们在做什么。 -
它甚至没有用。交换临时变量更快。
标签: c++ algorithm sorting quicksort