-1
#include <stdio.h>
#include <conio.h>
int *qs(int*,int,int);
int partition(int*,int,int);
void main()
{
int arr[]={60,65,70,75,80,55,50,45,40};
int p=0,q=8;
int *sa;
clrscr();
sa=qs(arr,p,q);
printf("\n After applying quick sort the array will be::\n");
while(p<=q)
{
printf(" %d",*sa);
sa++;
p++;
}
getch();
}
int *qs(int *arr,int p,int q)
{
int pos;
if(p==q)
{
return(arr);
}
else
{
pos=partition(arr,p,q);
qs(arr,p,pos-1);
qs(arr,pos+1,q);
return(arr);
}
}
int partition(int *arr,int p,int q)
{
int x,i,j,temp;
x=arr[p];
i=p;
for(j=p+1;j<=q;j++)
{
if(arr[j]<=x)
{
i=i+1;
temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
temp=arr[i];
arr[i]=arr[p];
arr[p]=temp;
return i;
}
該程序是使用分治法快速排序算法。當我使用turbo C++ 3.0編譯這段代碼時,我沒有收到任何錯誤消息,但是在運行時,我只能看到控制檯的黑屏。我嘗試了很多次,但無法找到任何錯誤。沒有編譯錯誤,但在turbo C++ 3.0中沒有輸出
在調試器中會發生什麼?幾乎肯定是在那裏有一個無限循環... – trojanfoe
請使用GCC。 dinos使用Turbo C和Turbo C++。現在它們已經滅絕了,編譯器也是如此。 –
ideone給出了段錯誤。 – chris