用sort函数,不用qsort
时间: 2023-06-10 16:08:29 浏览: 120
在C++中,sort函数可以用来对数组或容器进行排序,不需要使用qsort函数。sort函数的使用方法如下:
```cpp
#include <algorithm> // 包含sort函数的头文件
bool compare(int a, int b) {
return a < b; // 从小到大排序
}
int main() {
int arr[] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5};
int len = sizeof(arr) / sizeof(arr[0]);
std::sort(arr, arr + len, compare); // 使用sort函数排序
for (int i = 0; i < len; i++) {
std::cout << arr[i] << " ";
}
return 0;
}
```
在sort函数中,第一个参数是需要排序的数组或容器的起始位置,第二个参数是结束位置的下一个位置,第三个参数是用来比较元素的函数,函数返回true表示第一个元素应该排在第二个元素之前,否则返回false。
在上述例子中,compare函数用来比较两个元素的大小,将数组从小到大排序。使用sort函数可以方便地对数组进行排序,而且不需要手动实现排序算法。
相关问题
用qsort函数会比用sort函数更快吗
一般来说,qsort函数比sort函数更快,原因如下:
1. qsort使用了快速排序算法,而sort使用的是归并排序算法。在大多数情况下,快速排序的时间复杂度比归并排序更好。
2. qsort函数是一个C标准库函数,而sort函数是一个C++标准库函数。由于C++需要考虑到更多的复杂性,所以sort函数需要的额外处理时间更多。
3. qsort函数处理的是指针数组,而sort函数处理的是STL容器,STL容器的存储通常比指针数组要慢。
需要注意的是,以上只是一般情况下的判断,具体的实现和使用场景可能会有所不同。在实际应用中,应该根据具体情况选择合适的排序函数。
如果不用qsort函数呢
如果不使用`qsort()`函数,你也可以手动编写排序算法来对结构体类型的数组进行排序。常见的排序算法有冒泡排序、选择排序、插入排序、快速排序、归并排序等。以下是使用冒泡排序的一个例子:
```c
#include <stdio.h>
#include <string.h>
struct Person {
char name[50];
int age;
};
// 比较结构体元素的年龄
int compare_persons(const struct Person *a, const struct Person *b) {
return a->age - b->age;
}
void bubble_sort(struct Person array[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (compare_persons(&array[j], &array[j + 1]) > 0) {
// 交换元素
struct Person temp = array[j];
array[j] = array[j + 1];
array[j + 1] = temp;
}
}
}
}
int main() {
struct Person people[] = { { "Alice", 25 }, { "Bob", 30 }, { "Charlie", 20 } };
int num_people = sizeof(people) / sizeof(people[0]);
bubble_sort(people, num_people);
for (int i = 0; i < num_people; i++) {
printf("%s, %d\n", people[i].name, people[i].age);
}
return 0;
}
```
阅读全文