recursive selection sort..

This is a discussion on recursive selection sort.. within the C Programming forums, part of the General Programming Boards category; i built this code exactly like in the theory the min function works where is the problem why its not ...

  1. #1
    Banned
    Join Date
    Oct 2008
    Posts
    1,535

    recursive selection sort..

    i built this code exactly like in the theory
    the min function works

    where is the problem
    why its not sorting
    ??
    Code:
    #include <stdio.h>
    int min( int num[], int i, int j );
    void swap(int num[],int i,int j);
    void selection_sort(int arr[], int size);
    void selSort(int array[], int i,int length);
    
    int main()
    {
    	int array[3];
    	 array[0]=2;
    	 array[1]=6;
    	 array[2]=3;
         selection_sort(array,3);
         printf("%d,%d,%d\n",array[0],array[1],array[2]);
    
     
    
       return 0;
    }
    
    
    
     
    void selection_sort(int arr[], int size){
      selSort(arr,0,size);
    }
    
    void selSort(int array[], int i,int length)
    {
    
    	if (i<length)
                 { 				 
    			 swap(array,i,min(array,0,i));
    			 selSort(array,i+1,length); 
    		}
    
    }
     
    
     int min( int num[], int i, int j )
    {
      if ( i > 0 )
    {
      if ( num[i-1] < j )
    {
      return min( num, i-1, num[i-1] );
    } 
    else
    {
      return min( num, i-1, j);
    }
    } 
    else
    {
      return j;
    }
    }
    
    void swap(int num[],int i,int j)
    {
    int temp;
    temp=num[i];
    num[i]=num[j];
    num[j]=temp;
    }

  2. #2
    Registered User
    Join Date
    Oct 2008
    Location
    TX
    Posts
    2,047
    Instead of going through so many hoops; the recursive min() you have is enough to sort the array provided you hand out pieces of it inside a for loop.

  3. #3
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    i cant use a for loop

    only recurtion
    Last edited by transgalactic2; 01-13-2009 at 01:10 AM.

  4. #4
    CSharpener vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,484
    when calling min inside min - the last parameter is an array value

    when calling min inside sel_sort - the last parameter is an array index

    this will not work together

    you should think about better names for parameters than i,j
    The first 90% of a project takes 90% of the time,
    the last 10% takes the other 90% of the time.

  5. #5
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    the min function works
    i tried it
    so i dont need to look inside it

    the question is whether i implemented the algorithm of the main selection_sort(int arr[], int size)
    and selsort
    ??

  6. #6
    CSharpener vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,484
    Quote Originally Posted by transgalactic2 View Post
    the min function works
    i tried it
    so i dont need to look inside it

    the question is whether i implemented the algorithm of the main selection_sort(int arr[], int size)
    and selsort
    ??
    it works when used correcly

    you are using it incorrectly
    The first 90% of a project takes 90% of the time,
    the last 10% takes the other 90% of the time.

  7. #7
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    how am i supposed to use it in this algorithm?
    the minimum function find the minimum from the starting index to the end index

    thats what i did
    Last edited by transgalactic2; 01-13-2009 at 01:33 AM.

  8. #8
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    where is the problem in the implementation of the algorithm
    ??

  9. #9
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    i did it like it was told here

    http://en.wikipedia.org/wiki/Selection_sort

  10. #10
    The larch
    Join Date
    May 2006
    Posts
    3,573
    If I'm not mistaken you should find the minimum item in the unsorted part of the array, that is between num[i]...num[length], not num[0]...num[i].

    And the minimum function appears to be wrong for reasons others have noted.
    I might be wrong.

    Thank you, anon. You sure know how to recognize different types of trees from quite a long way away.
    Quoted more than 1000 times (I hope).

  11. #11
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    my min function is fine
    this is an example of its working fine

    Code:
    #include <stdio.h>
    int min( int num[], int i, int j );
    
    
    int main()
    {
    	int array[3];
    	
    	 array[0]=2;
    	 array[1]=6;
    	 array[2]=3;
        
    
    printf("%d\n",min(array, 3,3));
    
     
    
       return 0;
    }
    
    
    //j is the last member in the array
    //i is the number of cells
     
     int min( int num[], int i, int j )
    {
    if ( i > 0 )
    {
    if ( num[i-1] < j )
    {
    return min( num, i-1, num[i-1] );
    } else {
    return min( num, i-1, j);
    }
    } else {
    return j;
    }
    }
    i changed it to
    Code:
    swap(array,i,min(array,length,i));
    but it keeps the array as it is
    Last edited by transgalactic2; 01-13-2009 at 04:31 AM.

  12. #12
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    it does nothing with the array

    Code:
    #include <stdio.h>
    int min( int num[], int i, int j );
    void swap(int num[],int i,int j);
    void selection_sort(int arr[], int size);
    void selSort(int array[], int i,int length);
    
    int main()
    {
    	int array[3];
    	 array[0]=2;
    	 array[1]=6;
    	 array[2]=3;
         selection_sort(array,3);
         printf("%d,%d,%d\n",array[0],array[1],array[2]);
    
     
    
       return 0;
    }
    
    
    
     
    void selection_sort(int arr[], int size){
      selSort(arr,0,size);
    }
    
    void selSort(int array[], int i,int length)
    {
    
    	if (i<length)
                 { 				 
    			 swap(array,i,min(array,length,i));
    			 selSort(array,i+1,length); 
    		}
    
    }
     
    
     int min( int num[], int i, int j )
    {
      if ( i > 0 )
    {
      if ( num[i-1] < j )
    {
      return min( num, i-1, num[i-1] );
    } 
    else
    {
      return min( num, i-1, j);
    }
    } 
    else
    {
      return j;
    }
    }
    
    void swap(int num[],int i,int j)
    {
    int temp;
    temp=num[i];
    num[i]=num[j];
    num[j]=temp;
    }

  13. #13
    and the hat of copycat stevesmithx's Avatar
    Join Date
    Sep 2007
    Posts
    494
    Try tracing the program with a debugger.
    Not everything that can be counted counts, and not everything that counts can be counted
    - Albert Einstein.


    No programming language is perfect. There is not even a single best language; there are only languages well suited or perhaps poorly suited for particular purposes.
    - Herbert Mayer

  14. #14
    Banned
    Join Date
    Oct 2008
    Posts
    1,535
    i did
    it just doesnt swap anything

    why?

  15. #15
    CSharpener vart's Avatar
    Join Date
    Oct 2006
    Location
    Rishon LeZion, Israel
    Posts
    6,484
    And what will happen if you call it like
    Code:
    int main()
    {
    	int array[3];
    	
    	 array[0]=2;
    	 array[1]=6;
    	 array[2]=3;
        
    
    printf("%d\n",min(array, 3,0));
    
     
    
       return 0;
    }
    The first 90% of a project takes 90% of the time,
    the last 10% takes the other 90% of the time.

Page 1 of 3 123 LastLast
Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Insertion and selection sort
    By Dashing Boy in forum C Programming
    Replies: 4
    Last Post: 08-29-2006, 04:42 PM
  2. recursive quick sort - stack overflow
    By Micko in forum C Programming
    Replies: 9
    Last Post: 01-01-2005, 04:51 PM
  3. Recursive Array Sort
    By Nakeerb in forum C++ Programming
    Replies: 3
    Last Post: 12-13-2002, 07:27 PM
  4. recursive selection sort function
    By Cornelius in forum C Programming
    Replies: 3
    Last Post: 11-08-2002, 03:12 PM
  5. selection sort records of chars
    By hew in forum C++ Programming
    Replies: 8
    Last Post: 04-23-2002, 03:49 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21