//quick sort @liiuheng
#include <iostream>
#include<string>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int quicksort(int* head,int* tail){
int middle=*tail,flag=0;
int* left=head;
int* right=tail;
if(left<right){
while(left!=right){
if(flag){
if(middle>*right){
*left++=*right;
flag=!flag;
}
else
right--;
}
else{
if(middle<*left){
*right--=*left;
flag=!flag;
}
else
left++;
}
}
}
*left=middle;
if(head<left-1)
quicksort(head,left-1);
if(tail>left+1)
quicksort(left+1,tail);
return 0;
}
int main(int argc, char** argv) {
int length;
cout<<"input the length of arr"<<endl;
cin>>length;
int arr[length];
for(int i=0;i<length;i++){
cin>>arr[i];
}
quicksort(arr,&arr[length-1]);
for(int j=0;j<length;j++){
cout<<arr[j];
cout<<" ";
}
system("pause");
return 0;
}
#include <iostream>
#include<string>
using namespace std;
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int quicksort(int* head,int* tail){
int middle=*tail,flag=0;
int* left=head;
int* right=tail;
if(left<right){
while(left!=right){
if(flag){
if(middle>*right){
*left++=*right;
flag=!flag;
}
else
right--;
}
else{
if(middle<*left){
*right--=*left;
flag=!flag;
}
else
left++;
}
}
}
*left=middle;
if(head<left-1)
quicksort(head,left-1);
if(tail>left+1)
quicksort(left+1,tail);
return 0;
}
int main(int argc, char** argv) {
int length;
cout<<"input the length of arr"<<endl;
cin>>length;
int arr[length];
for(int i=0;i<length;i++){
cin>>arr[i];
}
quicksort(arr,&arr[length-1]);
for(int j=0;j<length;j++){
cout<<arr[j];
cout<<" ";
}
system("pause");
return 0;
}