编写一个程序实现快速排序
时间: 2023-10-16 16:19:32 浏览: 45
好的,欢迎提问。以下是用 Python 编写的快速排序算法程序:
```python
def quicksort(arr):
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quicksort(less) + [pivot] + quicksort(greater)
# 调用示例
arr = [3, 7, 2, 1, 5, 4]
print(quicksort(arr))
# 输出:[1, 2, 3, 4, 5, 7]
```
以上代码实现了快速排序算法。我们首先从数组中选择一个基准值,然后将所有小于该基准值的元素划分到基准值左侧,所有大于该基准值的元素划分到右侧,再分别对左右两部分进行递归排序。这样就可以不断缩小问题规模,最终得到有序的数组。
希望我的回答能够帮到你!
相关问题
编写c++一个程序实现快速排序
好的,您可以参考以下的 C 语言代码实现快速排序算法:
```c
#include <stdio.h>
void quickSort(int *arr, int low, int high) {
int pivot, i, j, temp;
if (low < high) {
pivot = low;
i = low;
j = high;
while (i < j) {
while (arr[i] <= arr[pivot] && i <= high) {
i++;
}
while (arr[j] > arr[pivot] && j >= low) {
j--;
}
if (i < j) {
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
temp = arr[j];
arr[j] = arr[pivot];
arr[pivot] = temp;
quickSort(arr, low, j - 1);
quickSort(arr, j + 1, high);
}
}
int main() {
int arr[10] = {9, 1, 8, 2, 7, 3, 6, 4, 5, 0};
int size = sizeof(arr)/sizeof(arr[0]);
quickSort(arr, 0, size - 1);
printf("Sorted array: ");
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这个代码使用了递归实现快速排序的算法,将数组的最左元素作为基准元素。排序过程中用两个指针分别从数组的两端(左端和右端)进行比较,交换不符合大小关系的数据。最终交换基准元素与指针相遇的位置,然后将数组分成左右两个部分进行递归排序。
编写程序实现快速排序
以下是C语言实现快速排序算法的代码示例:
```c
#include <stdio.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int partition(int arr[], int low, int high) {
int pivot = arr[high];
int i = (low - 1);
for (int j = low; j <= high - 1; j++) {
if (arr[j] < pivot) {
i++;
swap(&arr[i], &arr[j]);
}
}
swap(&arr[i + 1], &arr[high]);
return (i + 1);
}
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pi = partition(arr, low, high);
quickSort(arr, low, pi - 1);
quickSort(arr, pi + 1, high);
}
}
int main() {
int arr[] = {64, 34, 25, 12, 22, 11, 90};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
printf("Sorted array: \n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```