如何用冒泡法和简单选择法对6个字符串降序并输出

如何用冒泡法和简单选择法对6个字符串降序并输出,第1张

#include "stdioh"

#include "stringh"

#define N 100

#define M 6

int main()

{

char s[N][N], tmp[N];

int i, j, k, num, n;

printf("程序开始,欢迎使用\n\n");

printf("\n\n");

printf(" 菜单\n\n");

printf(" 按1用冒泡排序进行排序\n\n");

printf("按2用简单选择排序进行排序\n\n");

printf(" 按0退出程序\n\n");

printf("\n\n");

while (scanf("%d", &num) != EOF && num)

{

if (num == 1)

{

getchar();

printf("请输入%d个字符串\n\n", M);

for (i = 0; i < M; ++i)

scanf("%s", s[i]);

for (i = 0; i < M; ++i)

for (j = 0; j < M - 1; ++j)

if (strcmp(s[j + 1], s[j]) >0)

{

strcpy(tmp, s[j + 1]);

strcpy(s[j + 1], s[j]);

strcpy(s[j], tmp);

}

printf("冒泡排序后的字符串为:\n\n");

for (i = 0; i < M; ++i)

printf("%s ", s[i]);

printf("\n\n");

} else

{

getchar();

printf("请输入%d个字符串\n\n", M);

for (i = 0; i < M; ++i)

scanf("%s", s[i]);

for (i = M - 1; i > 0; --i)

{

k = i;

for (j = i - 1; j >= 0; --j)

if (strcmp(s[k], s[j]) > 0)

k = j;

if (k != i)

{

strcpy(tmp, s[i]);

strcpy(s[i], s[k]);

strcpy(s[k], tmp);

}

}

printf("简单选择排序后的字符串为:\n\n");

for (i = 0; i < M; ++i)

printf("%s ", s[i]);

printf("\n\n");

}

printf("继续使用请按1,退出程序请按0\n\n");

while (scanf("%d", &n) != EOF)

{

if (n == 1)

break;

else

printf("程序结束,感谢使用!\n\n");

}

printf("\n\n");

printf(" 菜单\n\n");

printf(" 按1用冒泡排序进行排序\n\n");

printf("按2用简单选择排序进行排序\n\n");

printf(" 按0退出程序\n\n");

printf("\n\n");

}

printf("程序结束,感谢使用!\n\n");

return 0;

}

选择排序如下:

#include <stdioh>

#include <stdlibh>

void choose_sort( int array[], int s, int e );

int main( void )

{

int array[100];

int num;

int i;

int j;

int k;

printf( "input the amout(<100) of the array:" );

scanf( "%d", &num );

for( i = 0; i < num; i++)

{

scanf( "%d", array + i );

}

choose_sort( array, 0, num - 1 );

/

for( i = 0; i < num - 1; i++ )

{

k = i;

for( j = i + 1; j < num; j++ )

{

k = array[j] < array[k] j : k;

}

if( i != k )

{

array[i] ^= array[k];

array[k] ^= array[i];

array[i] ^= array[k];

}

}

/

printf( "the result of choose sort:\n" );

for( i = 0; i < num; i++)

{

printf( "%d ", array[i] );

}

printf( "\n" );

system( "pause" );

return 0;

}

void choose_sort( int array[], int s, int e )

{

int i;

int j;

int k;

for( i = s; i < e; i++ )

{

k = i;

for( j = i + 1; j <= e; j++ )

{

k = array[k] > array[j] j : k;

}

if( k != i )

{

array[i] ^= array[k];

array[k] ^= array[i];

array[i] ^= array[k];

}

}

}

插入排序如下:

#include <stdioh>

#include <stdlibh>

//already check /

void insert_sort( int array[], int s, int e );

int main( void )

{

int array[100];

int num;

int i;

int key;

int j;

printf( "input the amount(<100) of array: " );

scanf( "%d", &num );

for( i = 0; i < num; i++ )

{

scanf( "%d", array + i );

}

insert_sort( array, 0, num - 1 );

/

for( i = 1; i < num; i++ )

{

key = array[i];

j = i - 1;

while( j >= 0 && array[j] > key )

{

array[j + 1] = array[j];

j--;

}

array[j + 1] = key;

}

/

printf( "insert sort result:\n" );

for( i = 0; i < num; i++ )

{

printf( "%d ", array[i] );

}

printf( "\n" );

system( "pause" );

return 0;

}

void insert_sort( int array[], int s, int e )

{

int i;

int j;

int key;

for( i = s + 1; i <= e; i++)

{

key = array[i];

for( j = i - 1; j >= s && array[j] > key; j-- )

{

array[j + 1] = array[j];

}

array[j + 1] = key;

}

}

冒泡排序如下:

#include <stdioh>

#include <stdlibh>

void bubble_sort( int array[], int s, int e );

int main( void )

{

int i;

int num;

int array[100];

printf( "input amount(<100) of number: " );

scanf( "%d", &num );

for( i = 0; i < num; i++ )

{

scanf( "%d", array + i );

}

bubble_sort( array, 0, num - 1 );

printf( "result of bubble sort:\n" );

for( i = 0; i < num; i++ )

{

printf( "%d ", array[i] );

}

printf( "\n" );

system( "pause" );

return 0;

}

/

void bubble_sort( int array[], int s, int e )

{

int i;

int j;

for( i = e; i > s; i-- )

{

for( j = s + 1; j <= i; j++ )

{

if( array[j - 1] > array[j] )

{

array[j] ^= array[j - 1];

array[j - 1]^= array[j];

array[j] ^= array[j - 1];

}

}

}

}

/

注意:以上三个算法的main函数部分是为了让你输入一些数来测试排序算法而写的,排序的具体实现另写成一个函数。

补充题:

#include <stdioh>

#include <stdlibh>

#include <stringh>

int search(char str1, char str2);

main()

{

char str1[100];

char str2[100];

int result;

printf("input first string: ");

scanf("%s", str1);

printf("input first string: ");

scanf("%s", str2);

result = search(str1, str2);

if(result < 0){

printf("str2 is not in str1\n");

}

else{

printf("str2 is in str1, and begins at %d\n", result);

}

system("pause");

}

int search(char str1, char str2){

int len1 = strlen(str1);

int len2 = strlen(str2);

int i;

int j;

int k;

i = 0;

while(i <= len1 - len2){

j = 0;

k = i;

while(j < len2 && str1[k] == str2[j]){

j++;

k++;

}

if(j == len2){

return i;

}

i++;

}

return -1;

}

注意:main也是测试用的,具体实现写成一个函数

以上就是关于如何用冒泡法和简单选择法对6个字符串降序并输出全部的内容,包括:如何用冒泡法和简单选择法对6个字符串降序并输出、编写程序,实现三种排序算法(选择、插入、冒泡)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9770572.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-01
下一篇2023-05-01

发表评论

登录后才能评论

评论列表(0条)

    保存