大神帮小弟一把,不知道这个快排错在哪里?貌似进入死循环- -

errol_guodawen 2014-05-08 10:50:52
#include<iostream>
using namespace std;

void quickSort(int*, int, int);
int merge(int*, int , int);
int q;
int main()
{
int index;
cin >> index;
int* number = new int[index];
for(int i = 0; i < index; i++)
cin >> number[i];
cout << "程序开始执行——————" << endl;
quickSort(number,0,index);
cout << "程序执行完毕,输出结果——————" << endl;
for(int i = 0; i < index; i ++)
cout << number[i] << " " ;
delete []number;
return 0;
}

void quickSort(int number[],int p,int r)
{
while(true)
{
if(p < r)
{
q = merge(number,p,r);
quickSort(number,p,q);
quickSort(number,q+1,r);
}
else
return ;

}
}

int merge(int arr[],int p, int r)
{

int flag = arr[p];
while(true)
{

while(arr[p++] >= flag)
{
break;
}
while(arr[r--] < flag)
{
break;
}
p--;
r++;
if(p >= r)
{
q = p;
return q;
}
else{
int temp = arr[p];
arr[p] = arr[r];
arr[r] = temp;
}

}
}
...全文
100 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
罗博士 2014-05-08
  • 打赏
  • 举报
回复
自己单步调试一下,看哪里死了。 cout << "程序开始执行——————" << endl; quickSort(number,0,index); //你这句话的参数用错了吧,应该使用index-1,因为你写的函数,形参p、r是闭区间。 cout << "程序执行完毕,输出结果——————" << endl;
kivien 2014-05-08
  • 打赏
  • 举报
回复
(⊙o⊙)… 问题一(可能是个人才疏):貌似数组初始化的长度是一定的,即为const,不能为变量

    int index;
    cin >> index;
    int* number = new int[index];
问题二:中间有个地方是不会跳出while(true)的

    while(true)
    {
               
               while(arr[p++] >= flag)
               {
                            break;
               }
               while(arr[r--] < flag)
               {
                              break;
               }
               p--;
               r++;
               if(p >= r)
               {   
                   q = p; 
                   return q;
               }
               else{//这里应该有个break或者return什么的吧
                   int temp = arr[p];
                   arr[p] = arr[r];
                   arr[r] = temp; 
               }
               
    }

65,209

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧