gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:56:43 25 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

7年前关闭。




Improve this question




任务是编写一个使用不同排序算法的程序。我已经能够将字符串插入到 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:
泽克
克里斯
鲍勃
亚当

等等…

最佳答案

您在“argv”中获取数据,但将“array”传递给排序函数。
您是否在某处将“argv”分配给“array”?
对不起,如果我错过了。

关于c - 该项目的目标是展示排序算法的知识,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23551604/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com