برنامه كامل سؤال اول.
از كتاب مقسمي هست.
البته خطاهايي داشت كه رفع شد.
#include<conio.h>
#include<stdio.h>
int selection(int x[],int left,int right,int k);
int partition(int x[],int left,int right,int &pivotpoint);
void swap(int &a,int &b);
void main()
{
clrscr();
int m,ans;
int a[10]={20,89,11,5,34,22,16,93,64,1};
printf("Enter Critical Area:");
scanf("%d",&m);
ans=selection(a,0,9,m);
printf("No. is:%d",ans);
getch();
}
int selection(int x[],int left,int right,int k)
{
int pivotpoint;
int low,high;
low=left;
high=right;
if(left==right) return x[left];
else
{
pivotpoint=partition(x,low,high,pivotpoint);
if(k==pivotpoint)
return x[pivotpoint];
else if(k<pivotpoint)
return selection(x,left,pivotpoint-1,k);
else
return selection(x,pivotpoint+1,right,k);
}
}
int partition(int x[],int left,int right,int &pivotpoint)
{
int i,j,pivot;
j=left;
pivot=x[left];
for(i=left+1;i<=right;i++)
if(x[i]<pivot)
{
j++;
swap(x[i],x[j]);
}
swap(x[left],x[j]);
pivotpoint=j;
}
void swap(int &a,int &b)
{
int t;
t=a;
a=b;
b=t;
}