Program 6

decl
  int a,b,n,arr[10];
  int swap(int index, int newindex);
  int readarr(int temp);
  int writearr(int temp);
  int partition (int low, int high);
  int quicksort(int low,int high);
enddecl

int swap(int index ,int newindex)
{
  decl
    int s;
  enddecl

  begin
    s = arr[index];
    arr[index] = arr[newindex];
    arr[newindex] = s;

    return s;
  end
}

int readarr(int temp)
{
  decl
    int count;
  enddecl

  begin
    count=0;

    while(count < temp) do
      read(arr[count]);
      count=count+1;
    endwhile;

    return count;
  end
}

int writearr(int temp)
{
  decl
    int count;
  enddecl

  begin
    count = 0;

    while(count < temp) do
      write(arr[count]);
      count = count+1;
    endwhile;

    return count;
  end
}

int partition (int low, int high)
{
  decl
    int pivot,t;
    int i,j;
  enddecl

  begin
    pivot = arr[high];
    j = low;
    i = low;

    while(i < high) do
      if (arr[i] <= pivot) then
      t = swap (i , j);
      j = j+1;
      endif;
      i=i+1;
    endwhile;

    i = swap (j , high);

    return j;
  end
}



int quicksort (int low , int high)
{
  decl
    int pp,temp,t;
  enddecl

  begin

    if (low < high) then
      pp = partition (low , high);
      temp = quicksort(pp+1,high);
      t = quicksort(low , pp-1);
    endif;

    return 1;
  end
}

int main()
{
  decl
    int junk;
    int temp;
  enddecl

  begin

    read(n);
    junk = readarr(n);
    temp = quicksort(0,n-1);
    junk = writearr(n);

    return junk;
  end
}