给定一个由n个整数和一个整数x组成的未排序数组,,请重新排列?中的元素

时间:2019-07-14 12:33:13

标签: java c++ algorithm pseudocode

给出n个整数和一个整数x的未排序数组,,重新排列?中的元素,以使所有小于或等于x的元素都在大于x的元素之前。

注意:不必在新数组中包括整数x。

您的算法的运行时间复杂度是多少?解释你的答案。

1 个答案:

答案 0 :(得分:-1)

要尝试此操作,您首先需要了解排序算法(Big O表示法),然后查看哪种排序算法最适合提出的问题。

1)鉴于您的问题定义了一些值在设置点之前,而某些在设置点之后,此处最好使用合并排序。参见this

2)阅读有关Big O表示法以及某些排序算法的时间复杂度的信息。总有最好的情况和最坏的情况。您还可以使用此符号计算设计的任何算法的复杂性。见下文。

Calculating complexity of an algorithm

编辑: 要提供帮助,这是一个解决方案。

第1部分:

function sortHalf(List listToSort, value x):
    List firstHalf;
    List secondHalf;
    for (Integer i in listToSort):
        if i less than x then firstHalf.add(i);
        else if i greater than x then secondHalf.add(i);
    loop
    List finalList;
    finalList.addAll(firstHalf);
    finalList.addAll(secondHalf);
    return finalList;
end

第2部分:

上述算法的时间复杂度为O(n),其中nlistToSort中元素的数量。最好的情况是O(1),其中有1个元素,最坏的情况是O(n)