根据以下结构体实现按用水量给用户排序:struct user{ char name[10],ID[20]; double water; double monney;/ }u[100];
时间: 2023-12-19 20:07:36 浏览: 24
可以使用冒泡排序或者快速排序来实现按用水量给用户排序。
使用冒泡排序实现代码如下:
```c++
void bubbleSort(user u[], int n) {
for (int i = 0; i < n - 1; i++) {
for (int j = 0; j < n - 1 - i; j++) {
if (u[j].water < u[j + 1].water) {
swap(u[j], u[j + 1]);
}
}
}
}
```
使用快速排序实现代码如下:
```c++
int partition(user u[], int low, int high) {
double pivot = u[low].water;
while (low < high) {
while (low < high && u[high].water <= pivot) {
high--;
}
u[low] = u[high];
while (low < high && u[low].water >= pivot) {
low++;
}
u[high] = u[low];
}
u[low].water = pivot;
return low;
}
void quickSort(user u[], int low, int high) {
if (low < high) {
int pivot = partition(u, low, high);
quickSort(u, low, pivot - 1);
quickSort(u, pivot + 1, high);
}
}
```
调用排序函数的方法如下:
```c++
int main() {
// 输入用户信息
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> u[i].name >> u[i].ID >> u[i].water >> u[i].monney;
}
// 按用水量排序
bubbleSort(u, n); // 或 quickSort(u, 0, n - 1);
// 输出排序结果
for (int i = 0; i < n; i++) {
cout << u[i].name << " " << u[i].ID << " " << u[i].water << " " << u[i].monney << endl;
}
return 0;
}
```