自由に使っていただいてかまいません。
arrにint型の配列を、sizeにarrの要素数を渡します。
void quicksort(int* arr,int size) {
int left;
int right;
int maeleft;
int maeright;
int pipot;
int temp;
int lstack[100];
int rstack[100];
int stacknum;
lstack[0]=0;
rstack[0]=size-1;
stacknum=0;
while(stacknum>=0) {
maeleft=left=lstack[stacknum];
maeright=right=rstack[stacknum];
pipot=arr[(left+right)/2];
while(left<right) {
for(;left<=maeright && arr[left]<pipot;left++);
for(;right>=maeleft && arr[right]>pipot;right--);
if(left<=right) {
temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
}
stacknum--;
if(right-maeleft<maeright-left) {
if(maeleft<right) {
stacknum++;
lstack[stacknum]=maeleft;
rstack[stacknum]=right;
}
if(left<maeright) {
stacknum++;
lstack[stacknum]=left;
rstack[stacknum]=maeright;
}
} else {
if(left<maeright) {
stacknum++;
lstack[stacknum]=left;
rstack[stacknum]=maeright;
}
if(maeleft<right) {
stacknum++;
lstack[stacknum]=maeleft;
rstack[stacknum]=right;
}
}
}
}