Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 这是什么样的排序算法?_C_Algorithm_Sorting_Computer Science - Fatal编程技术网

C 这是什么样的排序算法?

C 这是什么样的排序算法?,c,algorithm,sorting,computer-science,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(

这是一个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);
}
#包括
#包括
#包括
int main(){
字符*str[5],*temp;
inti,j,n;
printf(“\n您希望有多少个名称?”);
scanf(“%d”和“&n”);
对于(i=0;i0){
strcpy(temp,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],temp);
}
}
}
flushall();
printf(“\n被选中的列表:”);
对于(i=0;i
我希望这是一个气泡排序。有了这个,你可以按升序或降序排列数字。

我希望这是一个冒泡排序。有了这个,你可以按升序或降序排列数字。

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

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


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

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

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


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

当你编写它时,你认为它是什么?事实上,你试过运行它吗?它应该会以可怕的方式爆炸,因为从来没有为字符串分配内存。在我看来,这就像气泡排序。该代码具有未定义的行为,
temp
在被用作
strcpy()
调用的目标之前,从未初始化为有效指针。吓人的。
str[]
的内存“管理”同样丢失,它使用
get()
。伊克斯。@AhmedSamir好吧,那么这个特定资源的质量可以被认为远远低于合理水平。停止使用它,因为它只会教会你以后必须放弃的cr*p。你写它的时候认为它是什么?事实上,你试过运行它吗?它应该会以可怕的方式爆炸,因为从来没有为字符串分配内存。在我看来,这就像气泡排序。该代码具有未定义的行为,
temp
在被用作
strcpy()
调用的目标之前,从未初始化为有效指针。吓人的。
str[]
的内存“管理”同样丢失,它使用
get()
。伊克斯。@AhmedSamir好吧,那么这个特定资源的质量可以被认为远远低于合理水平。停止使用它,因为它只会教你cr*p,你以后将不得不放弃学习。是的,但效率很低。他本可以用(j=0;j替换(j=0;j。这样效率会稍微高一点。我们必须希望
n
永远不要大于5。是的,但效率很低。他本可以用(j=0;j替换(j=0;j。这样效率会稍微高一点。我们必须希望
n
永远不要大于5。