Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这个快速排序的实现从一个void函数返回? #包括 使用名称空间std; 模板 无效快速排序(项目a[],整数l,整数r) { if(r_C++_Sorting_Return_Quicksort_Void - Fatal编程技术网

C++ 为什么这个快速排序的实现从一个void函数返回? #包括 使用名称空间std; 模板 无效快速排序(项目a[],整数l,整数r) { if(r

C++ 为什么这个快速排序的实现从一个void函数返回? #包括 使用名称空间std; 模板 无效快速排序(项目a[],整数l,整数r) { if(r,c++,sorting,return,quicksort,void,C++,Sorting,Return,Quicksort,Void,如果r小于或等于1,则return从函数“返回”到调用函数。它基本上告诉您,如果r不是2或更大,则继续是没有意义的 另请参见您使用返回以避免继续执行函数的其余部分 顾名思义,它从函数返回 返回后的代码不会运行 (阅读其他100个答案,你永远不会忘记这一点)。它实际上并没有返回值。return语句所做的只是终止函数 你不会想的 #include<iostream> using namespace std; template <class Item> void quick

如果
r
小于或等于1,则
return
从函数“返回”到调用函数。它基本上告诉您,如果
r
不是2或更大,则继续是没有意义的


另请参见

您使用
返回
以避免继续执行函数的其余部分

顾名思义,它从函数返回

返回后的代码不会运行


(阅读其他100个答案,你永远不会忘记这一点)。

它实际上并没有返回值。return语句所做的只是终止函数

你不会想的

#include<iostream>
using namespace std;

template <class Item>

void quicksort(Item a[], int l, int r)
{
    if (r <= 1) return;

    int i = partition(a, l, r);
    quicksort(a, l,   i-1);
    quicksort(a, i+1, r);
}
如果


return
部分只是一个提前终止命令。如果
r它只是用于在满足条件的情况下在该点结束函数,那么它将停止函数。在具有
void
返回类型的函数中,一个
return
语句将从函数退出并返回到其调用方ol然后从下一条指令或表达式计算继续

还要注意的是,从
void
-返回函数的末尾流出相当于
return
语句,例如:

if(r>1)
{
    int i=partition(a,l,r);
    qucksort(a,l,i-1);
    qucksort(a,i+1,r);
}

在您的示例中,return仅用于退出函数,即返回到调用它的位置。

请参见以下答案:


在这个特定的例子中,我猜想作者的意图是停止函数的进一步执行。

void
函数中的
return
语句立即退出函数。这里使用
return
语句,以便如果要对大小为0或大小为1的数组进行排序,则函数不执行任何操作此函数也可以使用
if
语句编写,如下所示:

return;
模板无效快速排序(项目a[],int l,int r){
如果(r>2){
int i=分区(a,l,r);
快速排序(a、l、i-1);
快速排序(a、i+1、r);
}
}
此函数的含义与函数的原始版本相同,但不明确包含
return
语句


希望这有帮助!

如果在
返回后未指定任何值,则表示返回
无效

template <class Item> void quicksort(Item a[], int l, int r) {
    if (r > 2) {
        int i = partition(a, l, r);
        quicksort(a, l,   i-1);
        quicksort(a, i+1, r);
    }
}

不会返回与
快速排序
函数声明的
void
返回类型匹配的任何内容。这也意味着在这种情况下,它将返回给
快速排序
函数的调用者。

让答案流动:)你得到一张选票,你得到一张选票,每个人都得到一张选票:P@Named是的,这是一个有趣的关于问题和答案演变的观察(但显然没有重复)…非常感谢guyz。真是一个很棒的网站
return;
template <class Item> void quicksort(Item a[], int l, int r) {
    if (r > 2) {
        int i = partition(a, l, r);
        quicksort(a, l,   i-1);
        quicksort(a, i+1, r);
    }
}
return;