给定一个包含 n 个整数和一个整数 x 的未排序数组 A,重新排列 A 中的元素

Given an unsorted array 𝐴 of n integers and an integer x, rearrange the elements in 𝐴

本文关键字:整数 一个 新排列 元素 排列 包含 排序 数组      更新时间:2023-10-16

给定一个包含 n 个整数和一个整数 x 的未排序数组 A,重新排列 A 中的元素,以便所有小于或等于 x 的元素都位于大于 x 的任何元素之前。

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

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

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

1(鉴于您的问题,定义一些值在设定点之前,而一些值在设定点之后,合并排序在这里是最好的。看到这里。

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

计算算法的复杂性

编辑:为了提供帮助,这里有一个解决方案。

篇一:

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

篇二:

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

相关文章: