Sorting 算法是否以相同的时间一致性对整数和字符串进行排序?
我知道这可能是一个愚蠢的问题,但假设一个算法在5秒内对100000个整数进行排序。相同的算法是否也会在5秒内对100000个字符串进行排序,或者它们的排序时间会有所不同?比较字符串比比较整数更昂贵。整数比较是一种通常在CPU中进行的操作。另一方面,需要在软件中实现字符串的比较。因此,字符串的比较可以执行与字符串中的字符相同的操作Sorting 算法是否以相同的时间一致性对整数和字符串进行排序?,sorting,Sorting,我知道这可能是一个愚蠢的问题,但假设一个算法在5秒内对100000个整数进行排序。相同的算法是否也会在5秒内对100000个字符串进行排序,或者它们的排序时间会有所不同?比较字符串比比较整数更昂贵。整数比较是一种通常在CPU中进行的操作。另一方面,需要在软件中实现字符串的比较。因此,字符串的比较可以执行与字符串中的字符相同的操作 -dmg简单的答案是否定的。排序字符串通常比排序整数需要更长的时间 考虑对paper和papa进行排序——通过比较前4个字符,你会发现paper比papa更重要。对于较
-dmg简单的答案是否定的。排序字符串通常比排序整数需要更长的时间 考虑对paper和papa进行排序——通过比较前4个字符,你会发现paper比papa更重要。对于较大的字符串,尤其是短语,这可能会变得更长 相反,整数比较将使用一条指令
要进行排序,您需要重复进行此类比较;因此,对字符串进行排序几乎总是要花费更长的时间。字符串将花费更多的时间。整数将作为一组按位运算进行比较。对于字符串,每个字节或字符将与整数所需的相等运算进行比较
实际上,在最坏的情况下,对一组字符串排序将涉及比较所有字符串中的字符总数。最坏的情况是所有字符串都是相同的。必须遍历每个字符串直到结束,以确保它是相等的TRCMP以这种方式进行比较Q:算法是否以相同的时间一致性对整数和字符串进行排序
如果你的意思是:是的。字符串显然需要更长的时间。。。但按比例要长。假设您是按字典顺序对它们进行排序,并使用快速排序。您可以编写自己的比较函数来比较字符串和整数 整数比较起来非常简单,它的值是它的索引,而对于字符串,您需要根据它的内容进行比较。我们知道快速排序的平均时间复杂度为Onlogn,最差的时间复杂度为^2,当选择的枢轴是当前分区的最小值或最大值时,就会发生这种情况。我们假设一切进展顺利,目前情况一般 时间复杂度的变量是比较函数,整数是相当快的O1,而比较字符串的最坏情况是Ominlena,lenb,最好情况是O1,当第一个字符不同时 所以是的,它的速度比较慢,但考虑到它们是字符串,也不是那么糟糕,最坏的情况是那些很少发生的情况。就像Barney Goven提到的,比较两个相似的字符串
当谈到算法的时间复杂度时,我们通常谈论的是当数据集变大时算法的增长。就像paulsm4所说的,它的长度成比例地更长 你呢?答案大多是否定的……这里的问题是要排序的字符串的长度,如果它们很小,可以与整数的大小进行比较,当然取决于算法,如果不相同,它们可能非常接近,但是通常一个字符串比一个整数需要更多的时间进行比较。部分原因在于字符串通常是如何比较的,以及在CPU上只需一条指令就可以比较整数的事实。比较两个整数是大多数处理器上的一项操作,即运行速度非常快且时间恒定。比较字符串并不是在固定时间内运行的,例如,对于基本相同的非常长的字符串,比较可能需要比简单的短字符串更长的时间。