1.选择排序法
#include<stdio.h>
#include<string.h>
void input(char name[][20])
{
int i = 0;
for (i = 0; i < 5; i++)
{
printf("请开始输入%d个名字: ", i + 1);
gets(name[i]);
}
}
void output(char name[][20])
{
int i = 0;
for (i = 0; i < 5; i++)
{
printf("%s\n", name[i]);
}
}
void function(char name[][20])
{
char str[20] = { 0 };
int i, j;
int t;
for (i = 0; i < 5; i++)
{
t = i;
strcpy(str, name[i]);
for (j = i + 1; j < 5; j++)
{
if (strcmp(str, name[j]) > 0)
{
t = j;
strcpy(str, name[j]);
}
}
if (t != i)
{
strcpy(str, name[i]);
strcpy(name[i], name[t]);
strcpy(name[t], str);
}
}
}
int main()
{
char name[5][20];
input(name);
printf("\n原排序的名字:\n");
output(name);
function(name);
printf("\n升序后的名字:\n");
output(name);
return 0;
}
2.冒泡排序法
int main()3.给输入的五个姓名排序
{
char arr[50];///定义一个空数组存放排序后的名字
char name[5][50];///定义一个二维数组进行存放输入的名字
printf("请输入五组姓名:");
int i = 0; int j = 0;
for (i = 0; i < 5; i++)输入五次姓名
{
gets(name[i]);
}
for (i = 0; i < 5 - 1; i++)用冒泡排序进行姓名排序,五组名字排序四趟
{
for (j = 0; j < 5 - 1 - i; j++)每一趟的排序
{
if (strcmp(name[j], name[j + 1]) > 0)//进行比较
{进行交换
strcpy(arr, name[j]);
strcpy(name[j], name[j + 1]);
strcpy(name[j + 1], arr);
}
}
}
printf("排序后的结果为:\n");/输出排序结果
for (i = 0; i < 5; i++)
{
puts(name[i]);
}
return 0;
}