#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;
}