1. Topic
Write bubble sort to sort multiple strings.
2. Program code
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <Windows.h>
#include <string.h>
void bubble_sort(char *str[], int len)
{
int i = 0;
int j = 0;
int flag = 0;//定义一个标志,优化冒泡排序
for (i = 0; i < len - 1; i++)//冒泡排序总共要走几趟
{
flag = 0;//每次都把flag赋为0
for (j = 0; j < len - 1 - i; j++)//冒泡排序每趟要走几次
{
if (strcmp(str[j], str[j + 1]) > 0)//strcmp作用是对字符串作对比,
//若前面大则输出结果大于0,相等则等于0,否则小于0
{
char *temp = str[j];//定义一个指针存放交换的字符串
str[j] = str[j + 1];
str[j + 1] = temp;
flag++;//只要进入if语句,标志就+1
}
}
if (flag)//如果在该条循环语句内,flag没有增加,说明字符串已经按照顺序排
//列好了,不需要再做下面的循环了,直接跳出就好
{
break;
}
}
}
int main()
{
char* str[] = { "bcd", "abc", "acd", "bde", "cef", "cab" };//定义一个字符串数组
int len = sizeof(str) / sizeof(str[0]);//计算数组的长度
int i = 0;
bubble_sort(str, len);//调用冒泡排序函数
for (i = 0; i < len; i++)
{
printf("%s ", str[i]);//按顺序输出字符串
}
system("pause");
return 0;
}