C++ 写一个排序函数
时间: 2024-02-28 09:53:12 浏览: 17
下面是一个快速排序的 C++ 实现:
```c++
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int pivot = arr[(left + right) / 2];
while (i <= j) {
while (arr[i] < pivot) {
i++;
}
while (arr[j] > pivot) {
j--;
}
if (i <= j) {
std::swap(arr[i], arr[j]);
i++;
j--;
}
}
if (left < j) {
quickSort(arr, left, j);
}
if (i < right) {
quickSort(arr, i, right);
}
}
```
调用方式:
```c++
int arr[] = {5, 3, 8, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
quickSort(arr, 0, n - 1);
```
相关问题
C++写一个快速排序函数
好的,我可以回答这个问题。以下是一个快速排序函数的示例代码:
```c
void quickSort(int arr[], int left, int right) {
int i = left, j = right;
int tmp;
int pivot = arr[(left + right) / 2];
/* partition */
while (i <= j) {
while (arr[i] < pivot)
i++;
while (arr[j] > pivot)
j--;
if (i <= j) {
tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
i++;
j--;
}
};
/* recursion */
if (left < j)
quickSort(arr, left, j);
if (i < right)
quickSort(arr, i, right);
}
```
这个函数使用快速排序算法对一个整数数组进行排序。
c++写一个直接插入法排序函数
好的,以下是C++实现的直接插入排序函数:
```cpp
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j = j - 1;
}
arr[j + 1] = key;
}
}
```
该函数接受一个整型数组 `arr` 和数组的长度 `n`,并对数组进行直接插入排序。
算法思路:
1. 遍历数组,从第二个元素开始(下标为1)。
2. 将当前元素(即“关键字”)存储在变量 `key` 中。
3. 向前遍历数组,将所有比 `key` 大的元素向后移动一位,直到找到一个比 `key` 小的元素(或者已经到达数组的第一个元素)。
4. 将 `key` 插入到该元素的后面。
5. 重复步骤2-4,直到数组中的所有元素都被排序完毕。
希望这个函数对你有所帮助!