该项目的目标是展示排序算法的知识

时间:2014-05-08 20:12:58

标签: c algorithm sorting

分配是使用不同的排序算法编写程序。我已经能够将字符串插入到argv中,并且它们在打印时已被列出但我的问题是它始终打印在无序列表中。我试图在不同的排序算法中排序名称列表。这是我的代码

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

void bubble_sort_inorder( char [], char );
void bubble_sort_reverse( char [], char );
void swap( char[], char, char );
void print_array( char argc, char * argv[] );
void selection_sort_inorder( char [], char );
void selection_sort_reverse( char [], char );
void insertion_sort_inorder( char [], char );
void insertion_sort_reverse( char [], char );

int main( char argc, char * argv[] )
{
    char array[ 10 ];
    char i = 0;

    printf( "\nUnordered List:\n" );
    print_array( argc, argv );

    bubble_sort_inorder( array, i ); 
    print_array( argc, argv );

    bubble_sort_reverse( array, i ); 
    print_array( argc, argv );

    selection_sort_inorder( array, i ); 
    print_array( argc, argv );

    selection_sort_reverse( array, i ); 
    print_array( argc, argv );

    insertion_sort_inorder( array, i ); 
    print_array( argc, argv );

    insertion_sort_reverse( array, i ); 
    print_array( argc, argv );

    return 0;
}

void print_array( char argc, char * argv[]  )
{
    int i = 0;
    for( i = 1; i < argc; i++ )
    {
        printf( "%s\n", argv[ i ] );
    }
    printf( "\n" );
}

void bubble_sort_inorder( char array[], char size )
{
    char swapped;
    char count = 0;
    char i = 0;

    printf( "Bubble Sort A - Z: \n" );
    do
    {
        swapped = 0;
        for( i = 1; i < size; i++ )
        {
            if( array[ i - 1 ] < array[ i ] )
            {
                swap( array, i - 1, i );
                swapped = 1;
            }
        }
        size--;
        count++;
    }while( swapped );
}

void bubble_sort_reverse( char array[], char size )
{
    char swapped;
    char count = 0;
    char i = 0;

    printf( "Bubble Sort Z - A: \n" );
    do
    {
        swapped = 0;
        for( i = 1; i <= size; i++ )
        {
            if( array[ i - 1 ] < array[ i ] )
            {
                swap( array, i , i - 1 );
                swapped = 1;
            }
        }
        size--;
        count++;
    }while( swapped );
}

 void swap( char array[], char a, char b )
 {
    char temp = array[ a ];
    array[ a ] = array[ b ];
    array[ b ] = temp;
 }

 void selection_sort_inorder( char array[], char size ){
    char i = 0;
    char j = 0;
    char index_of_min;

    printf( "Selection Sort A - Z: \n" );
    for( i = 0; i < size; i++ ){
        index_of_min = i;
        for( j = i + 1; j < size; j++ ){
            if( array[ j ] < array[ index_of_min ] ){
                index_of_min = j;
            }
        }
        if( index_of_min != i ){
            swap( array, i, index_of_min );
        }
    }
 }

 void selection_sort_reverse( char array[], char size ){
    char i = 0;
    char j = 0;
    char index_of_min;

    printf( "Selection Sort Z - A: \n" );
    for( i = 0; i < size; i++ ){
        index_of_min = i;
        for( j = i + 1; j < size; j++ ){
            if( array[ j ] < array[ index_of_min ] ){
                index_of_min = j;
            }
        }
        if( index_of_min != i ){
            swap( array, i, index_of_min );
        }
    }
 }

 void insertion_sort_inorder( char array[], char size ){
    char i = 0;
    char j = 0;
    char value = 0;
    printf( "Insertion Sort A - Z:\n" );
    for( i = 1; i < size; i++ ){
        value = array[ i ];
        j = i - 1;
        while( j >= 0 && array[ j ] > value ){
            array[ j + 1 ] = array[ j ];
            j = j - 1;
        }
        array[ j + 1 ] = value;
    }
 }

 void insertion_sort_reverse( char array[], char size ){
    char i = 0;
    char j = 0;
    char value = 0;
    printf( "Insertion Sort Z - A:\n" );
    for( i = 1; i < size; i++ ){
        value = array[ i ];
        j = i - 1;
        while( j >= 0 && array[ j ] > value ){
            array[ j + 1 ] = array[ j ];
            j = j - 1;
        }
    array[ j + 1 ] = value;
    }
 }

任何人都可以让我知道我做错了什么。该类是数据结构,这是他在课堂上使用的代码类型。

未排序:
齐克 克里斯 亚当 鲍勃

冒泡排序A-Z:
亚当 短发 克里斯 泽克

冒泡排序Z-A:
齐克 克里斯 短发 亚当

插入排序A-Z:
亚当 短发 克里斯 泽克

插入排序Z-A:
齐克 克里斯 短发 亚当

等...

1 个答案:

答案 0 :(得分:2)

您可以在“argv”中获取数据,但将“数组”传递给排序函数。 你在某个地方将“argv”分配给“数组”吗? 对不起,如果我错过了它。