快速排序中的一个问题

在快速排序一开始,我们需要判断left>right,如果成立就退出程序,为啥需要这一步呢,倘若排序中真的出现left>right情况,怎么办,我应该哪卡住了,望能解惑

void quicksort(int left,int right)
{
int i,j,t,temp;

if(left>right)
return;

temp=a[left]; //temp中存的就是基准数
i=left;
j=right;
阅读 2.6k
2 个回答

left和right两车“相向而行”,当left>right时,表示两车已“相遇”,就不用再继续开了。

这点代码逻辑还不完整,所以我的回答可能有些不准确。简答理解:leftright 分别表示数组的左右两端,在一趟快速排序中,left,right会向中间移动,当left>right时表示这一趟排序完成。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题