クイックソートの関数を書いたのですが、うまくソートできないようです。
int型の配列を昇順にソートしようとしています。
原因がわかりましたら教えてください。
お願いします。
プロジェクト全体も添付しておきます。
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<size && arr[left]<pipot;left++);
for(;right>=0 && arr[right]>pipot;right--);
if(left<=right) {
temp=arr[left];
arr[left]=arr[right];
arr[right]=temp;
left++;
right--;
}
}
if(left==right) {
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;
}
}
}
}