请问,这个return;在调用函数中是什么作用(快速排序)。
来源:2-6 冒泡排序
慕的地0341523
2018-10-08 13:51:42
#include <iostream>
int a[101],n;//定义全局变量,这两个变量需要在子函数中使用
void quicksort(int left,int right)
{
int i,j,t,temp;
if(left>right)
return;
temp=a[left]; //temp中存的就是基准数
i=left;
j=right;
while(i!=j)
{
//顺序很重要,要先从右边开始找
while(a[j]>=temp && i<j)
j--;
//再找右边的
while(a[i]<=temp && i<j)
i++;
//交换两个数在数组中的位置
if(i<j)
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
//最终将基准数归位
a[left]=a[i];
a[i]=temp;
quicksort(left,i-1);//继续处理左边的
quicksort(i+1,right);//继续处理右边的
}
int main()
{
int i,j,t;
//读入数据
scanf("%d",&n);
for(i=1;i<=n;i++)
cin>>a[i];
quicksort(1,n); //快速排序调用
//输出排序后的结果
for(i=1;i<=n;i++)
cout<<a[i];
getchar();getchar();
return 0;
}
1回答
你好,return语句有两种形式:
1.return;//不带返回值的return语句
2.return 0;//带返回值的return语句,或者返回一个变量或一个函数。
不带返回值的return语句用于,中断返回值为void类型的函数的执行,而带返回值的return则不行。
使用return expression;的代码编译失败。以下为失败代码:
#include <iostream> using namespace std; void func(){ cout<<"begin"<<endl; return 0;/*此处有问题,此时return;的作用相当于break;用于中断循环的作用。所以不该返回某个具体的值。*/ cout<<"end"<<endl; } int main(){ func(); return 0; }
将return 0;换为return;后,运行成功:
#include <iostream> using namespace std; void func(){ cout<<"begin"<<endl; return; cout<<"end"<<endl; } int main(){ func(); return 0; }
总结:return;的作用相当于break;用于中断循环的作用,而return 0;则是return的另一种用法,专用于返回值非void的函数返回其值。 如果解决您的问题请采纳,祝学习愉快!
相似问题