Cod sursa(job #1019674)

Utilizator crosmanCrosman Vlad crosman Data 31 octombrie 2013 19:07:48
Problema Statistici de ordine Scor 0
Compilator c Status done
Runda Arhiva educationala Marime 1.09 kb
#include <stdio.h>
#include <stdlib.h>


void quickSort(int numbers[], int array_size)
{
  q_sort(numbers, 0, array_size - 1);
}


void q_sort(int numbers[], int left, int right)
{
  int pivot, l_hold, r_hold;

  l_hold = left;
  r_hold = right;
  pivot = numbers[left];
  while (left < right)
  {
    while ((numbers[right] >= pivot) && (left < right))
      right--;
    if (left != right)
    {
      numbers[left] = numbers[right];
      left++;
    }
    while ((numbers[left] <= pivot) && (left < right))
      left++;
    if (left != right)
    {
      numbers[right] = numbers[left];
      right--;
    }
  }
  numbers[left] = pivot;
  pivot = left;
  left = l_hold;
  right = r_hold;
  if (left < pivot)
    q_sort(numbers, left, pivot-1);
  if (right > pivot)
    q_sort(numbers, pivot+1, right);
}
int main()
{
    int p[20],n,i,k;
    FILE *f=fopen("sdo.in","r"),*g=fopen("sdo.out","w");


    fscanf(f,"%d%d",&n,&k);

    for (i=0;i<n;i++)
        fscanf(f,"%d",&p[i]);

   quickSort(p,n);



        fprintf(g,"%d ",p[k]);
    return 0;
}