Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/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
Sorting 算法是否以相同的时间一致性对整数和字符串进行排序?_Sorting - Fatal编程技术网

Sorting 算法是否以相同的时间一致性对整数和字符串进行排序?

Sorting 算法是否以相同的时间一致性对整数和字符串进行排序?,sorting,Sorting,我知道这可能是一个愚蠢的问题,但假设一个算法在5秒内对100000个整数进行排序。相同的算法是否也会在5秒内对100000个字符串进行排序,或者它们的排序时间会有所不同?比较字符串比比较整数更昂贵。整数比较是一种通常在CPU中进行的操作。另一方面,需要在软件中实现字符串的比较。因此,字符串的比较可以执行与字符串中的字符相同的操作 -dmg简单的答案是否定的。排序字符串通常比排序整数需要更长的时间 考虑对paper和papa进行排序——通过比较前4个字符,你会发现paper比papa更重要。对于较

我知道这可能是一个愚蠢的问题,但假设一个算法在5秒内对100000个整数进行排序。相同的算法是否也会在5秒内对100000个字符串进行排序,或者它们的排序时间会有所不同?

比较字符串比比较整数更昂贵。整数比较是一种通常在CPU中进行的操作。另一方面,需要在软件中实现字符串的比较。因此,字符串的比较可以执行与字符串中的字符相同的操作


-dmg

简单的答案是否定的。排序字符串通常比排序整数需要更长的时间

考虑对paper和papa进行排序——通过比较前4个字符,你会发现paper比papa更重要。对于较大的字符串,尤其是短语,这可能会变得更长

相反,整数比较将使用一条指令


要进行排序,您需要重复进行此类比较;因此,对字符串进行排序几乎总是要花费更长的时间。

字符串将花费更多的时间。整数将作为一组按位运算进行比较。对于字符串,每个字节或字符将与整数所需的相等运算进行比较


实际上,在最坏的情况下,对一组字符串排序将涉及比较所有字符串中的字符总数。最坏的情况是所有字符串都是相同的。必须遍历每个字符串直到结束,以确保它是相等的TRCMP以这种方式进行比较

Q:算法是否以相同的时间一致性对整数和字符串进行排序


如果你的意思是:是的。字符串显然需要更长的时间。。。但按比例要长。

假设您是按字典顺序对它们进行排序,并使用快速排序。您可以编写自己的比较函数来比较字符串和整数

整数比较起来非常简单,它的值是它的索引,而对于字符串,您需要根据它的内容进行比较。我们知道快速排序的平均时间复杂度为Onlogn,最差的时间复杂度为^2,当选择的枢轴是当前分区的最小值或最大值时,就会发生这种情况。我们假设一切进展顺利,目前情况一般

时间复杂度的变量是比较函数,整数是相当快的O1,而比较字符串的最坏情况是Ominlena,lenb,最好情况是O1,当第一个字符不同时

所以是的,它的速度比较慢,但考虑到它们是字符串,也不是那么糟糕,最坏的情况是那些很少发生的情况。就像Barney Goven提到的,比较两个相似的字符串


当谈到算法的时间复杂度时,我们通常谈论的是当数据集变大时算法的增长。就像paulsm4所说的,它的长度成比例地更长

你呢?答案大多是否定的……这里的问题是要排序的字符串的长度,如果它们很小,可以与整数的大小进行比较,当然取决于算法,如果不相同,它们可能非常接近,但是通常一个字符串比一个整数需要更多的时间进行比较。部分原因在于字符串通常是如何比较的,以及在CPU上只需一条指令就可以比较整数的事实。比较两个整数是大多数处理器上的一项操作,即运行速度非常快且时间恒定。比较字符串并不是在固定时间内运行的,例如,对于基本相同的非常长的字符串,比较可能需要比简单的短字符串更长的时间。