帮我写个归并排序的代码用C++写
时间: 2023-03-24 14:01:44 浏览: 101
归并排序的c++代码
5星 · 资源好评率100%
當然可以!以下是一個用C語言實現快速排序(quicksort)的例子:
```c
#include <stdio.h>
// 交換元素
void swap(int* a, int* b) {
int t = *a;
*a = *b;
*b = t;
}
// 分區函數
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // 選擇最後一個元素作為主元素
int i = (low - 1); // i 表示小於主元素的部分的尾指針
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[] = {10, 7, 8, 9, 1, 5};
int n = sizeof(arr) / sizeof(arr[0]);
quicksort(arr, 0, n - 1);
printf("排序後的數組:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
快速排序是一種高效的排序算法,時間複雜度為O(nlogn),可以在大多數情況下快速排序一個數組。
阅读全文