C++vector数组指定数组范围排序
时间: 2023-10-01 09:05:51 浏览: 109
可以使用标准库函数 qsort
进行排序,需要自定义一个比较函数来指定排序规则。
比如,对于一个 int
类型的数组 arr
,要对其中从下标 left
到下标 right
之间的元素进行升序排序,可以这样实现:
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
。
调用方式如下:
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}
。
阅读全文
相关推荐
















