这是一种什么样的排序算法?

时间:2015-02-27 13:23:15

标签: c algorithm sorting computer-science

这是一个用于对名称列表进行排序的c程序的示例...我是算法的新手,这就是我需要知道它是什么类型的原因! 什么是现实生活中的例子我也可以使用它?

 #include<stdio.h>
 #include<string.h>
 #include<stdlib.h>

 int main() {
 char *str[5], *temp;
 int i, j, n;

 printf("\nHow many names do you want to have?");
 scanf("%d", &n);

 for (i = 0; i < n; i++) {
 printf("\nEnter the name %d: ", i);
 flushall();
 gets(str[i]);
 }

 for (i = 0; i < n; i++) {
  for (j = 0; j < n - 1; j++) {
     if (strcmp(str[j], str[j + 1]) > 0) {
        strcpy(temp, str[j]);
        strcpy(str[j], str[j + 1]);
        strcpy(str[j + 1], temp);
     }
  }
}

flushall();

printf("\nSorted List : ");
for (i = 0; i < n; i++)
  puts(str[i]);

return (0);
}

2 个答案:

答案 0 :(得分:3)

我希望它能够进行泡泡排序。通过这个,您可以按升序或降序排列数字。

答案 1 :(得分:2)

首先程序无效。它不会在存储字符串的位置分配内存。因此,询问用户是一个非常危险的步骤 他想要多少名字,因为在程序中没有空间存储字符串。:)

您可以为字符串和标准函数fgets使用二维可变长度字符数组而不是gets来输入字符串。

至于排序算法,那么它是冒泡排序的一个糟糕的实现。:)