'프로그래밍'에 해당되는 글 1건

  1. 2009.05.22 퀵소트

스터디 시켜주느라 짜본 퀵소트.
제대로 짠건진 모르겠네. 데헷 :-9

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

void printArr( int *head, int *tail );
void quickSort( int *head, int *tail );
void swap( int *v1, int *v2 );

int main(void)
{
    srand( time(NULL) );
   
    for( int i=0 ; i<10 ; i++ )
    {
        int arr[10];
        for( int j=0 ; j<10 ; j++ )
            arr[j] = rand() % 100;

        printArr( arr, &(arr[9]) );
        quickSort( arr, &arr[9] );
        printArr( arr, &(arr[9]) );
        printf("\n");
    }
}

void printArr( int *head, int *tail )
{
    int *p = head;
    while( p<=tail )
    {
        printf( "%d ", *p );       
        p++;
    }
    printf( "\n" );
}

void quickSort( int *head, int *tail )
{
    // pivot = head
   
    if( head>=tail )
        return;
   
    int *p=head, *l=head, *r=tail;
   
    while( l<=r )
    {
        if( *l>*p && *r<*p )
            swap( l, r );
        if( *l<=*p ) l++;
        if( *r>=*p ) r--;
    }
   
    int *c = *l<*r?l:r;
    swap( p, c );

    quickSort( head, c-1 );
    quickSort( c+1, tail );
}

void swap( int *v1, int *v2 )
{
    int t = *v1;
    *v1 = *v2;
    *v2 = t;
}

Simple quick sort source code.

Posted by 배트
,