题目链接:7-30 字符串的冒泡排序
一. 题目
1. 题目
2. 输入输出样例
3. 限制
二、代码
1. 代码实现
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
// 获取输入的字符串
char **arrayGet(int len) {
char **array;
array = malloc(sizeof(char*) * len);
for (int i = 0; i < len; i++) {
array[i] = malloc(sizeof(char) * 12);
if (!scanf("%s", array[i])) {
return 0;
}
}
return array;
}
// 冒泡排序
char **arraySort(char **array, int len, int time) {
char *tempStr;
for (int tempTime = 0; tempTime < time; tempTime++) {
for (int i = 0; i < len - 1; i++) {
if (strcmp(array[i], array[i+1]) > 0) {
tempStr = array[i];
array[i] = array[i+1];
array[i+1] = tempStr;
}
}
len --; // 下次排序的比较次数减1
}
return array;
}
// 打印函数
void arrayPrint(char **array, int len) {
while (len) {
printf ("%s\n", *array);
array++;
len--;
}
}
// 释放函数
void arrayFree(char **array, int len) {
while (len) {
len--;
free(array[len]);
}
free(array);
}
int main(void) {
int len, time;
char **array;
if (scanf("%d %d", &len, &time) != 2) {
return -1;
}
array = arrayGet(len);
if (!array) {
return -1;
}
array = arraySort(array, len, time);
arrayPrint(array, len);
free(array); // 错误空间释放,请勿使用
return 0;
}