输入一个长度为n(1 ≤ n ≤ 1000)的整数数列。用快速排序算法对这个数列从小到大
时间: 2023-07-27 09:03:54 浏览: 187
快速排序是一种高效的排序算法,它的基本思想是通过分治的方式将一个数列不断划分为两个子序列,再分别对两个子序列进行排序,最终将整个数列有序。
快速排序的具体步骤如下:
1. 首先选择一个基准值,可以选择数列的第一个元素,将其作为基准值。
2. 初始化两个指针,分别指向数列的第一个元素和最后一个元素。
3. 从右往左,找到第一个小于基准值的元素,并将其与左指针所指向的元素交换位置。
4. 从左往右,找到第一个大于基准值的元素,并将其与右指针所指向的元素交换位置。
5. 重复第3步和第4步,直到左指针和右指针相遇。
6. 将基准值与相遇位置的元素交换位置。
7. 现在,基准值左边的元素都小于它,右边的元素都大于它。以基准值为界划分为两个子数列。
8. 递归地对两个子数列进行排序,直到每个子数列只有一个元素,排序完成。
对于输入的长度为n的整数数列,可以使用递归的快速排序算法进行排序。首先将整个数列作为一个子数列,然后不断递归地将子数列划分为更小的子数列,直到每个子数列只有一个元素,此时排序完成。
以下是对数列进行快速排序的Python代码实现:
def partition(arr, low, high):
i = low - 1
pivot = arr[high]
for j in range(low, high):
if arr[j] < pivot:
i += 1
arr[i], arr[j] = arr[j], arr[i]
arr[i+1], arr[high] = arr[high], arr[i+1]
return i+1
def quickSort(arr, low, high):
if low < high:
pi = partition(arr, low, high)
quickSort(arr, low, pi-1)
quickSort(arr, pi+1, high)
# 测试用例
arr = [4, 2, 7, 1, 3]
n = len(arr)
quickSort(arr, 0, n-1)
print(arr)
输出为:[1, 2, 3, 4, 7]
通过以上代码实现了对输入的长度为n的整数数列进行快速排序,得到从小到大的有序数列。
阅读全文