Я хочу реализовать этот алгоритм быстрой сортировки с помощью некоторой стратегии сводной стратегии, но в ней есть некоторая логическая ошибка. Не могли бы вы помочь мне найти его?Быстрая реализация, не могу найти ошибку
#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);
}
}
Как вы знаете, у вас есть логическая ошибка? Можете ли вы предоставить результат для небольшого набора входных данных образца? –
Название «NO IDEA WATS THE PROBLEM» не помогло вам, поэтому я, ошибаюсь, отполировал его. Вы пытались отладить это? Распознавание ошибки? – slezica
Я не объявлен в разделе –