C++vector数组指定数组范围排序
时间: 2023-10-01 21:05:51 浏览: 100
c++对数组的排序
可以使用标准库函数 `qsort` 进行排序,需要自定义一个比较函数来指定排序规则。
比如,对于一个 `int` 类型的数组 `arr`,要对其中从下标 `left` 到下标 `right` 之间的元素进行升序排序,可以这样实现:
```c
int cmp(const void *a, const void *b) {
return *(int *)a - *(int *)b;
}
void sort_range(int *arr, int left, int right) {
qsort(arr + left, right - left + 1, sizeof(int), cmp);
}
```
其中,`cmp` 函数返回值为负数表示 `a` 应该排在 `b` 前面,返回值为正数表示 `a` 应该排在 `b` 后面,返回值为 0 表示 `a` 和 `b` 相等。
`sort_range` 函数中,`qsort` 函数的第一个参数是指向要排序的数组第一个元素的指针,需要加上 `left` 才能指向指定的范围;第二个参数是要排序的元素个数,即 `right - left + 1`;第三个参数是每个元素的大小,即 `sizeof(int)`;第四个参数是比较函数的指针,即 `cmp`。
调用方式如下:
```c
int arr[] = {9, 2, 5, 7, 3};
int left = 1, right = 3;
sort_range(arr, left, right);
```
这样就可以将 `arr` 数组中下标从 `left` 到 `right` 的元素排序,结果为 `{9, 2, 5, 7, 3}` 变为 `{9, 2, 3, 5, 7}`。
阅读全文