我想用一些不同的樞軸策略來實現這種快速排序算法,但其中存在一些邏輯錯誤。你能幫我找到它嗎?快速排序實現,找不到錯誤
#include <iostream.h>
#include<stdlib.h>
#include<stdio.h>
#include<conio.h>
int arr[100],i,pivot,left,right,sum=0,a,n=10;
int partition();
void quickSort(int* ,int ,int);
void main()
{
clrscr();
int i,n=20;
for(i=0;i<=n;i++)
{
arr[i]=rand()%100;
}
for(i=0;i<=n;i++)
{
cout<<"\t"<<arr[i];
}
quickSort(arr,n,i);
for(i=1;i<n;i++)
{
cout<<"\n"<<arr[i];
}
getch();
}
int partition()
{
// int i;
// int sum=0;
// int pivot;
// stable_sort(arr,arr+3);
for(i=0;i<5;i++)
{
cout<<"\nsorted k elements\t"<<arr[i];
// sum=sum+arr[i];
}
// cout<<sum;
//cout<<"median is "<<sum/3;
pivot=arr[(i)/2];
cout<<"pivotis value at position "<<pivot ;
return pivot;
}
void quickSort(int arr[],int left,int right)
{
partition();
right=n,left=0;
int i = right, j =left;
int tmp;
int p=pivot;
cout<<" m array of p"<<p;
while (i <= j) {
while (arr[i] < p)
i++;
while (arr[j] > p)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
}
if (left < j)
{
quickSort(arr, left, j);
}
if (i < right)
{
quickSort(arr, i, right);
}
}
你怎麼知道你有一個邏輯上的錯誤?你能提供一個小樣本輸入數據集的結果嗎? – 2011-04-13 13:57:24
標題'沒有想法問題'沒有幫助你,所以我,呃 - 拋光它。你嘗試過調試嗎?找到錯誤? – slezica 2011-04-13 13:58:22
我沒有在分區中聲明 – 2011-04-13 14:05:41