请问,这个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回答

guly

2018-10-08

你好,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的函数返回其值。 如果解决您的问题请采纳,祝学习愉快!

0

0 学习 · 593 问题

查看课程