
#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个字符串降序并输出、编写程序,实现三种排序算法(选择、插入、冒泡)、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)