C++程序 将数组元素按升序排序
在C ++中,可以使用各种算法来对数组元素进行排序,其中最常用的是使用STL中的sort函数。sort函数可以按升序或降序方式对数组进行排序。
sort函数
sort函数能够自动识别数组元素的数据类型,并根据指定的排序方式对数组进行排序。以下是sort函数的基本语法:
#include <algorithm>
sort(first, last, cmp);
其中,first
和last
表示要排序的元素的迭代器范围,cmp
是指定的比较函数。如果不指定比较函数,则默认按升序方式排序。
按升序排序
以下是一个示例程序,用于将数组元素按升序方式排序:
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[] = {5, 3, 1, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
输出结果为:
1 2 3 4 5
在上面的代码中,定义了一个整型数组arr
,长度为5。使用sizeof
运算符和数组下标操作符可以得到数组的长度n
。
然后,使用sort
函数对数组元素进行排序,排序结果存储在arr
中。
最后,使用一个循环遍历数组,打印出每个元素。
按降序排序
如果要按降序方式对数组进行排序,可以传递一个自定义的比较函数作为sort
函数的第三个参数:
#include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a, int b) {
return a > b;
}
int main() {
int arr[] = {5, 3, 1, 4, 2};
int n = sizeof(arr) / sizeof(arr[0]);
sort(arr, arr + n, cmp);
for (int i = 0; i < n; i++) {
cout << arr[i] << " ";
}
return 0;
}
输出结果为:
5 4 3 2 1
在上面的代码中,定义了一个自定义的比较函数cmp
,它返回true
表示第一个参数比第二个参数大,即需要将第二个参数排在前面,从而实现按降序排序。然后将该函数作为第三个参数传递给sort
函数。
自定义类型排序
除了基本数据类型之外,也可以使用sort
函数对结构体等自定义类型的元素进行排序。在这种情况下,需要定义一个比较函数来指定排序方式。
#include <iostream>
#include <algorithm>
using namespace std;
struct Person {
string name;
int age;
};
bool cmp(Person a, Person b) {
return a.age < b.age;
}
int main() {
Person people[] = {
{"Alice", 21},
{"Bob", 23},
{"Charlie", 19},
{"David", 27},
{"Eve", 25}
};
int n = sizeof(people) / sizeof(people[0]);
sort(people, people + n, cmp);
for (int i = 0; i < n; i++) {
cout << people[i].name << ", " << people[i].age << endl;
}
return 0;
}
输出结果为:
Charlie, 19
Alice, 21
Bob, 23
Eve, 25
David, 27
在上面的代码中,定义了一个结构体Person
,包含姓名和年龄两个成员变量。然后定义了一个自定义的比较函数cmp
,它返回true
表示第一个参数比第二个参数小,即需要将第一个参数排在前面,从而实现按年龄升序排序。最后将该函数作为第三个参数传递给sort
函数。
结论
使用C ++程序对数组元素进行排序是十分常见的操作。通过使用STL中的sort
函数,可以轻松实现升序和降序排序,并且可以方便地自定义比较函数来对自定义类型进行排序。