#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;
}
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;
}
解决方案:10分
#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;
}
解决方案:10分
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;
}
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;
}