c - Random Selection -i'th order statistic -


the random selection program below doesn't find i'th order statistic. following program follows algorithm provided in cormen's introduction algorithm. in advance finding bug.

#include<stdio.h> #include<stdlib.h> int random(int a,int b) //generates random numbers [a,b] {     return a+(rand()%(b-a+1)); } void swap(int *a,int *b) //swwaps elements {     int temp;     temp=*a;     *a=*b;     *b=temp; } int partition(int a[],int p,int r) //partitioning similar of quicksort {     int i=p-1,j,x=a[r];     for(j=p;j<r;j++)     {         if(a[i]<x)         {             i++;             swap(&a[i],&a[j]);         }     }     swap(&a[i+1],&a[r]);     return i+1; } int random_partition(int a[],int p,int r) //random index generation element gets swapped last element of array {     int q=random(p,r);     swap(&a[q],&a[r]);     return partition(a,p,r); } int random_selection(int a[],int p,int r,int index) //finds i'th order statistic {     if(p==r)     return a[p];     if(p<r)     {         int mid,k;         mid=random_partition(a,p,r);         k=mid-p+1;         if(k==index)         return a[mid];         if(index<k)         return random_selection(a,p,mid-1,index);         if(index>k)         return random_selection(a,mid+1,r,index);     } } main() {     int a[50],i,size,index;     printf("enter size of array\n");     scanf("%d",&size);     printf("enter array elements\n"); //takes array elements input     for(i=1;i<=size;i++)     {         scanf("%d",&a[i]);     }     for(i=1;i<=size;i++) //prints index of each element     {     printf("%d\n",random_selection(a,1,size,i)); } } 

do need srand() in main()? these threads recommended way initialize srand? , how srand relate rand function?

#include <stdio.h> #include <stdlib.h> #include <time.h>  int main() {    int i, n;    time_t t;     n = 5;     /* intializes random number generator */    srand((unsigned) time(&t));     /* print 5 random numbers 0 50 */    for( = 0 ; < n ; i++ )     {       printf("%d\n", rand() % 50);    }     return(0); } 

Comments

Popular posts from this blog

How to connect android app to App engine -

gcc - MinGW's ld cannot perform PE operations on non PE output file -

php - display validation error message next to the textbox in codeigniter -