2、 随机输入5个英文单词,将这5个英文单词按首字母从a到z的顺序排序输出。分别采用简单插入排序、希尔排序和快速排序解决这一问题。
时间: 2024-02-06 20:12:57 浏览: 124
简单的单词排序程序(按首字母排序)
3星 · 编辑精心推荐
以下是用C语言实现简单插入排序、希尔排序和快速排序的代码,输入5个英文单词后,会自动按首字母从a到z的顺序排序输出:
```c
#include <stdio.h>
#include <string.h>
void insert_sort(char *arr[], int len) {
int i, j;
char *temp;
for (i = 1; i < len; i++) {
temp = arr[i];
for (j = i - 1; j >= 0 && strcmp(arr[j], temp) > 0; j--) {
arr[j + 1] = arr[j];
}
arr[j + 1] = temp;
}
}
void shell_sort(char *arr[], int len) {
int gap, i, j;
char *temp;
for (gap = len / 2; gap > 0; gap /= 2) {
for (i = gap; i < len; i++) {
temp = arr[i];
for (j = i - gap; j >= 0 && strcmp(arr[j], temp) > 0; j -= gap) {
arr[j + gap] = arr[j];
}
arr[j + gap] = temp;
}
}
}
int partition(char *arr[], int low, int high) {
char *pivot = arr[low];
while (low < high) {
while (low < high && strcmp(arr[high], pivot) >= 0) {
high--;
}
arr[low] = arr[high];
while (low < high && strcmp(arr[low], pivot) <= 0) {
low++;
}
arr[high] = arr[low];
}
arr[low] = pivot;
return low;
}
void quick_sort(char *arr[], int low, int high) {
if (low < high) {
int pivot = partition(arr, low, high);
quick_sort(arr, low, pivot - 1);
quick_sort(arr, pivot + 1, high);
}
}
int main() {
char *words[5];
char word[20];
int i, j;
printf("请输入5个英文单词:\n");
for (i = 0; i < 5; i++) {
scanf("%s", word);
words[i] = (char *)malloc(sizeof(char) * (strlen(word) + 1));
strcpy(words[i], word);
}
// 使用简单插入排序
insert_sort(words, 5);
printf("使用简单插入排序排序后的结果为:\n");
for (i = 0; i < 5; i++) {
printf("%s ", words[i]);
}
printf("\n");
// 使用希尔排序
shell_sort(words, 5);
printf("使用希尔排序排序后的结果为:\n");
for (i = 0; i < 5; i++) {
printf("%s ", words[i]);
}
printf("\n");
// 使用快速排序
quick_sort(words, 0, 4);
printf("使用快速排序排序后的结果为:\n");
for (i = 0; i < 5; i++) {
printf("%s ", words[i]);
}
printf("\n");
// 释放空间
for (i = 0; i < 5; i++) {
free(words[i]);
}
return 0;
}
```
输出示例:
```
请输入5个英文单词:
apple banana orange pear grape
使用简单插入排序排序后的结果为:
apple banana grape orange pear
使用希尔排序排序后的结果为:
apple banana grape orange pear
使用快速排序排序后的结果为:
apple banana grape orange pear
```
阅读全文