Use counting Sorting Algorithm...i am givin the code below ..it sort
the array in O(n) but uses xtra memory space (n+k)...we have to pay
eother memory or time....


#include <stdlib.h>
#include<stdio.h>
#include<conio.h>


int main()
{
    int array[]={4,2,2,2,4,5,9,5,10};
    int size=10;
    int min,max;
    max=min=array[0];
    int i=0;
    //clrscr();
  for(i = 1; i < size; i++)
  {
    if (array[i] < min)
      min = array[i];
    else if (array[i] > max)
      max = array[i];
  }

  int range = max - min + 1;
  int *count =(int *) malloc(range * sizeof(int));

    for(i = 0; i < size; i++)
    count[i] = 0;

    for(i = 0; i < size; i++)
    count[array[i]]++;



    int pos=0;

    for(i=0;i<size;i++)
    {
                      for(int j=0;j<count[i];j++)
                      {
                        array[pos]=i;
                        pos++;
                      }
    }
    //free(count);

    for(int i=0;i<size;i++)
    printf("%d \n" ,array[i]);

    getch();
}

Regard's
Shashank Mani Narayan " Don't Be Evil U Can Earn While U learn"
Computer Science & Engineering
Birla Institute of  Technology,Mesra
Cell No. +91-9166674831

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To post to this group, send email to algoge...@googlegroups.com.
To unsubscribe from this group, send email to 
algogeeks+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/algogeeks?hl=en.

Reply via email to