哪位大神能不能帮忙看看C++递归的方法实现快速排序哪里出了有关问题啊
哪位大神能不能帮忙看看C++递归的方法实现快速排序哪里出了问题啊?
#include <iostream>
using namespace std;
const int arsize=10;
int array[arsize]={10,25,6,58,97,43,2,3,98,17};
void quicksort(int array[],int i,int j);
int partition(int array[],int i,int j);
void swap(int a ,int b);
int main()
{
quicksort(array, 0,9);
for(int m=0;m<arsize;m++)
cout<<array[m]<<endl;
system("pause");
return 0;
}
void quicksort(int array[],int L,int R)
{
if(L<R)
{
int pos=partition(array,L,R);
quicksort(array,L,pos-1);
quicksort(array,pos+1,R);
}
}
int partition(int array[],int i,int j)
{
int base=array[i];
while(i<j&&array[j]>=base)
j--;
array[i]=array[j];
array[j]=base;
//当遇到第一个比base大的数时,交换
while(i<j&&array[i]<base)
i++;
array[j]=array[i];
array[i]=base;
return i;
}
------解决思路----------------------
------解决思路----------------------
while(i<j){
while(i<j&&array[j]>=base)
j--;
array[i]=array[j];
array[j]=base;
//当遇到第一个比base大的数时,交换
while(i<j&&array[i]<base)
i++;
array[j]=array[i];
array[i]=base;
}
#include <iostream>
using namespace std;
const int arsize=10;
int array[arsize]={10,25,6,58,97,43,2,3,98,17};
void quicksort(int array[],int i,int j);
int partition(int array[],int i,int j);
void swap(int a ,int b);
int main()
{
quicksort(array, 0,9);
for(int m=0;m<arsize;m++)
cout<<array[m]<<endl;
system("pause");
return 0;
}
void quicksort(int array[],int L,int R)
{
if(L<R)
{
int pos=partition(array,L,R);
quicksort(array,L,pos-1);
quicksort(array,pos+1,R);
}
}
int partition(int array[],int i,int j)
{
int base=array[i];
while(i<j&&array[j]>=base)
j--;
array[i]=array[j];
array[j]=base;
//当遇到第一个比base大的数时,交换
while(i<j&&array[i]<base)
i++;
array[j]=array[i];
array[i]=base;
return i;
}
------解决思路----------------------
#include <iostream>
using namespace std;
const int arsize=10;
int array[arsize]={10,25,6,58,97,43,2,3,98,17};
void quicksort(int array[],int i,int j);
int partition(int array[],int i,int j);
void swap(int a ,int b);
int main()
{
quicksort(array, 0,9);
for(int m=0;m<arsize;m++)
cout<<array[m]<<endl;
system("pause");
return 0;
}
void quicksort(int array[],int L,int R)
{
if(L<R)
{
int pos=partition(array,L,R);
quicksort(array,L,pos-1);
quicksort(array,pos+1,R);
}
}
int partition(int array[],int i,int j)
{
int base=i;
while(i<j&&array[j]>=base)
j--;
array[i]=array[j];
array[j]=base;
//当遇到第一个比base大的数时,交换
while(i<j&&array[i]<base)
i++;
array[j]=array[i];
array[i]=base;
return i;
}
------解决思路----------------------
while(i<j){
while(i<j&&array[j]>=base)
j--;
array[i]=array[j];
array[j]=base;
//当遇到第一个比base大的数时,交换
while(i<j&&array[i]<base)
i++;
array[j]=array[i];
array[i]=base;
}