C/C++ sort函数详解及应用实例

2 下载量 42 浏览量 更新于2024-08-30 收藏 64KB PDF 举报
在C/C++编程中,sort函数是STL(Standard Template Library)提供的一种非常重要的排序算法,它位于<algorithm>头文件中。使用sort函数可以方便地对不同类型的数据进行排序,包括基本数据类型如整型、字符型和浮点型,以及自定义的复杂数据结构。sort函数有两种主要版本: 1. 基本版本: ```cpp template <class RandomAccessIterator> void sort(RandomAccessIterator first, RandomAccessIterator last); ``` 这个版本接受两个迭代器作为参数,`first`表示要排序的元素范围的起始位置,`last`表示结束但不包括的位置。这个版本默认使用的是升序排列,其内部实现依赖于迭代器类型所关联的比较运算符,例如对于整型和浮点型,会使用小于号`<`来判断。 2. 可定制版本: ```cpp template <class RandomAccessIterator, class Compare> void sort(RandomAccessIterator first, RandomAccessIterator last, Compare comp); ``` 在此版本中,通过提供一个额外的`Compare`类型的函数对象`comp`,允许用户自定义排序规则。`comp`函数接收两个待比较的元素,根据返回值决定它们的相对顺序。如果`comp(a, b)`返回true,则`a`将排在`b`之前。 在实际应用中,可以通过创建自定义的比较函数来适应不同的排序需求。例如,对于结构体`product`,可以编写如下的比较函数: - 按照价格升序排序: ```cpp bool compare_struct_float(const product &a, const product &b) { return a.price < b.price; } ``` - 按照名称字符串升序排序: ```cpp bool compare_struct_str(const product &a, const product &b) { return string(a.name) < string(b.name); } ``` 在使用sort函数时,可以结合这些比较函数对数组或容器中的元素进行排序。例如,对整型数组、字符数组和结构体数组进行排序的例子: ```cpp int array_int[5] = {4, 1, 2, 5, 3}; char array_char[5] = {'a', 'c', 'b', 'e', 'd'}; double array_double[5] = {1.2, 2.3, 5.2, 4.6, 3.5}; // 对整型数组进行升序排序 sort(array_int, array_int + 5); // 对字符数组按照ASCII码升序排序 sort(array_char, array_char + 5); // 对结构体数组按照价格升序排序 sort(array_product, array_product + 5, compare_struct_float); // 对结构体数组按照名称字符串升序排序 sort(array_product, array_product + 5, compare_struct_str); ``` 最后,sort函数提供了打印排序结果的功能,可以观察排序前后数组的变化。以上就是C/C++中sort函数的基本用法和示例,熟练掌握sort函数有助于提升代码的效率和灵活性。