分配是使用不同的排序算法编写程序。我已经能够将字符串插入到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:
齐克
克里斯
短发
亚当
等...
答案 0 :(得分:2)
您可以在“argv”中获取数据,但将“数组”传递给排序函数。 你在某个地方将“argv”分配给“数组”吗? 对不起,如果我错过了它。