c 快速排序{"lily",24},{"lucy",33},{"rose",12},{"jack",17},{"david",33},{"emma",15},{"tina",12}代码
时间: 2024-06-02 09:04:50 浏览: 25
快速排序是一种经典的排序算法,它的基本思想是通过一趟排序将待排序序列分割成两部分,其中一部分记录的关键字均比另一部分小,然后再按此方法对这两部分分别进行快速排序,以达到整个序列有序的目的。
下面是 C++ 实现的快速排序代码,对一个存储了 {"lily",24},{"lucy",33},{"rose",12},{"jack",17},{"david",33},{"emma",15},{"tina",12} 的数组进行排序:
```
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
struct person {
string name;
int age;
};
bool cmp(person a, person b) {
if (a.age == b.age) {
return a.name < b.name;
}
return a.age < b.age;
}
void quicksort(vector<person> &arr, int left, int right) {
if (left >= right) {
return;
}
int i = left, j = right;
person pivot = arr[left];
while (i < j) {
while (i < j && cmp(arr[j], pivot)) {
j--;
}
arr[i] = arr[j];
while (i < j && cmp(pivot, arr[i])) {
i++;
}
arr[j] = arr[i];
}
arr[i] = pivot;
quicksort(arr, left, i - 1);
quicksort(arr, i + 1, right);
}
int main() {
vector<person> arr = {{"lily", 24}, {"lucy", 33}, {"rose", 12}, {"jack", 17}, {"david", 33}, {"emma", 15}, {"tina", 12}};
quicksort(arr, 0, arr.size() - 1);
for (int i = 0; i < arr.size(); i++) {
cout << arr[i].name << " " << arr[i].age << endl;
}
return 0;
}
```