Pagini recente » Cod sursa (job #836766) | Cod sursa (job #178927) | Cod sursa (job #1984047) | Cod sursa (job #1518948) | Cod sursa (job #1815263)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("quick.in");
ofstream fout("quick.out");
int a[105],p,n,x,pivotIndex;
int partit(int a[105],int left,int right,int pivotIndex)
{
int pivotValue,i,storeIndex;
pivotValue=a[pivotIndex];
swap(a[pivotIndex],a[right]);
storeIndex=left;
for(i=left;i<right;i++)
{
if(a[i]<pivotValue)
{
swap(a[storeIndex],a[i]);
storeIndex++;
}
}
swap(a[right],a[storeIndex]);
return storeIndex;
}
int select(int a[105],int left,int right,int x)
{
while(1){
if(left==right)
return a[left];
pivotIndex=a[left];
pivotIndex=partit(a,left,right,pivotIndex);
if(x==pivotIndex)
return a[x];
else
{
if(x<pivotIndex)
return select(a,left,pivotIndex-1,x);
else
return select(a,pivotIndex+1,right,x);
}
}
}
int main()
{
fin>>n>>x;
for(int i=1;i<=n;i++)
fin>>a[i];
fout<<select(a,1,n,x);
return 0;
}