困难
技术面试0 次浏览

请编写一个函数,实现对一个整数数组进行排序,要求时间复杂度为 O(n log n)。

项目经理
编码能力排序算法

答题要点

可以使用快速排序算法来实现对整数数组的排序,其平均时间复杂度为 O(n log n)。以下是Python代码实现: python def quick_sort(arr): if len(arr) <= 1: return arr else: pivot = arr[0] left = [] right = [] for num in arr[1:]: if num <= pivot: left.append(num) else: right.append(num) return quick_sort(left) + [pivot] + quick_sort(right) # 测试代码 arr = [3, 6, 8, 10, 1, 2, 1] sorted_arr = quick_sort(arr) print(sorted_arr) 快速排序的基本思想是选择一个基准元素,将数组分为两部分,使得左边部分的元素都小于等于基准元素,右边部分的元素都大于基准元素,然后分别对左右两部分递归地进行排序。在代码中,首先判断数组的长度是否小于等于1,如果是则直接返回数组。否则,选择数组的第一个元素作为基准元素,遍历数组剩余元素,将小于等于基准元素的放入左边列表,大于基准元素的放入右边列表,最后递归地对左右列表进行排序并合并结果。