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
C 将数据从升序排序到降序,哪种排序是有效的?_C_Sorting_Data Structures - Fatal编程技术网

C 将数据从升序排序到降序,哪种排序是有效的?

C 将数据从升序排序到降序,哪种排序是有效的?,c,sorting,data-structures,C,Sorting,Data Structures,我想使用C实现对一组数据进行排序。我想知道哪种排序方式在时间复杂度方面是有效的和最好的。请注意,数据仅按升序排列。我想按降序排序。哪一个效率更高?效率最低?为什么? 有人能解释一下吗?在这种情况下,您不必使用排序算法。例如,您可以将ith元素与n-ith元素交换: for(i = 0; i < size/2; ++i) { tmp = arr[i]; arr[i] = arr[size - 1 - i]; arr[size - 1 - i] = tmp; } 用于

我想使用C实现对一组数据进行排序。我想知道哪种排序方式在时间复杂度方面是有效的和最好的。请注意,数据仅按升序排列。我想按降序排序。哪一个效率更高?效率最低?为什么?
有人能解释一下吗?

在这种情况下,您不必使用排序算法。例如,您可以将
i
th元素与
n-i
th元素交换:

for(i = 0; i < size/2; ++i)
{
    tmp = arr[i];
    arr[i] = arr[size - 1 - i];
    arr[size - 1 - i] = tmp;
}
用于(i=0;i

这始终具有复杂性
O(n/2)
。我认为没有比这更快的方法了。当然,除了从另一个方向读取数据之外。

我建议您查看位于的比较表,然后选择!