欢迎访问宙启技术站
智能推送

排序函数使用方法及示例

发布时间:2023-06-05 06:02:02

排序函数是一种在编程中常用的工具,它可以将一定数量的数据按照一定条件进行排序,以便更方便地查询、比较和处理。在实际编程中,排序函数的使用非常广泛,可以有效提高程序的运行效率和准确性。本文将就排序函数的使用方法及示例进行详细阐述。

一、排序函数的使用方法

不同编程语言中,排序函数的调用方法有所不同,但一般都包括以下步骤:

1. 定义排序函数名称及输入参数;

2. 编写排序算法,实现指定的排序方式;

3.返回排好序的数据。

由于各个编程语言的排序函数名、输入参数和排序算法有所不同,这里仅以 Python、Java 和 C++ 为例进行讲解。

1. Python:

Python 提供了一些内置的排序函数,比如 sort() 和 sorted(),它们的使用方法如下:

① sort() 函数:

sort() 函数是列表对象中的排序函数,可以对列表进行原地排序,不需要返回值。

语法:list.sort(key=,reverse=)

参数说明:

key:用于比较的关键字,可以是一个函数或 lambda 表达式;

reverse:排序规则,True 为降序,False 为升序(默认)。

例如,对列表 [1, 3, 4, 2, 5] 进行升序排列:

a = [1, 3, 4, 2, 5]
a.sort()
print(a)  # [1, 2, 3, 4, 5]

② sorted() 函数:

sorted() 函数是一个全局排序函数,它可以对任意可迭代对象进行排序,并生成一个新的有序列表。

语法:sorted(iterable,key=,reverse=)

参数说明:

iterable:可迭代对象,如列表、字符串、元组等;

key:用于比较的关键字,可以是一个函数或 lambda 表达式;

reverse:排序规则,True 为降序,False 为升序(默认)。

例如,对列表 [1, 3, 4, 2, 5] 进行升序排列:

a = [1, 3, 4, 2, 5]
b = sorted(a)
print(b)  # [1, 2, 3, 4, 5]

2. Java

Java 中的排序函数主要是 Arrays.sort() 方法,它可以对不同数据类型的数组进行排序。

语法:Arrays.sort(arrayName)

例如,对一个整型数组 arr 进行升序排列:

int[] arr = {1, 3, 4, 2, 5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));  // [1, 2, 3, 4, 5]

3. C++

C++ 中的排序函数主要有 std::sort()、std::stable_sort() 和 std::partial_sort() 等。

① std::sort():

std::sort() 是一种快速排序的算法,可以对STL容器中的数据进行排序。

语法:std::sort(first, last, cmp)

参数说明:

first:需要排序的容器的起始位置;

last:需要排序的容器的结束位置;

cmp:用于比较的函数,可以是一个函数指针或 lamada 表达式。

例如,对一个整型数组 arr 进行升序排列:

int arr[] = {1, 3, 4, 2, 5};
std::sort(arr, arr+5);
for(int i=0; i<5; i++){
    std::cout << arr[i] << " ";
}
std::cout << std::endl;  // 1 2 3 4 5

② std::stable_sort():

std::stable_sort() 是一种稳定排序的算法,可以对STL容器中的数据进行排序。

语法:std::stable_sort(first, last, cmp)

参数说明:

first:需要排序的容器的起始位置;

last:需要排序的容器的结束位置;

cmp:用于比较的函数,可以是一个函数指针或 lamada 表达式。

③ std::partial_sort():在指定区间内进行部分排序,可节省时间。

语法:std::partial_sort(first, middle, last, cmp)

参数说明:

first:需要排序的容器的起始位置;

middle:指示部分排序结束的位置;

last:需要排序的容器的结束位置;

cmp:用于比较的函数,可以是一个函数指针或 lamada 表达式。

例如,对一个整型数组 arr 进行升序排列:

int arr[] = {1, 3, 4, 2, 5};
std::partial_sort(arr, arr+3, arr+5);
for(int i=0; i<3; i++){
    std::cout << arr[i] << " ";
}
std::cout << std::endl;  // 1 2 3

二、排序函数的示例

1. 对数字进行排序

下面的示例演示了如何使用 Python 的 sort() 函数对数字列表进行排序。

a = [1, 3, 4, 2, 5]
a.sort()
print(a)  # [1, 2, 3, 4, 5]

使用 Java 的 Arrays.sort() 方法对数字数组进行排序。

int[] arr = {1, 3, 4, 2, 5};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));  // [1, 2, 3, 4, 5]

使用 C++ 的 std::sort() 方法对数字数组进行排序。

int arr[] = {1, 3, 4, 2, 5};
std::sort(arr, arr+5);
for(int i=0; i<5; i++){
    std::cout << arr[i] << " ";
}
std::cout << std::endl;  // 1 2 3 4 5

2. 对字符串进行排序

下面的示例演示了如何使用 Python 的 sorted() 函数对字符串列表进行排序。

a = ['abc', 'xyz', 'efg', 'dgh']
b = sorted(a)
print(b)  # ['abc', 'dgh', 'efg', 'xyz']

使用 Java 的 Arrays.sort() 方法对字符串数组进行排序。

String[] arr = {"abc", "xyz", "efg", "dgh"};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));  // [abc, dgh, efg, xyz]

使用 C++ 的 std::sort() 方法对字符串数组进行排序。

std::string arr[] = {"abc", "xyz", "efg", "dgh"};
std::sort(arr, arr+4);
for(int i=0; i<4; i++){
    std::cout << arr[i] << " ";
}
std::cout << std::endl;  // abc dgh efg xyz

3. 自定义规则进行排序

下面的示例演示了如何使用 Python 的 sorted() 函数自定义排序规则。

a = [(1, 'John'), (2, 'Bob'), (3, 'Jack')]
b = sorted(a, key=lambda x: x[1])
print(b)  # [(2, 'Bob'), (1, 'John'), (3, 'Jack')]

使用 Java 的 Arrays.sort() 方法自定义排序规则。

String[][] arr = {
        {"1", "John"},
        {"2", "Bob"},
        {"3", "Jack"}
    };
    Arrays.sort(arr, new Comparator<String[]>() {
        public int compare(String[] o1, String[] o2) {
            return o1[1].compareTo(o2[1]);
        }
    });
    for (int i = 0; i < arr.length; i++) {
        System.out.println(Arrays.toString(arr[i]));
    }

使用 C++ 的 std::sort() 方法自定义排序规则。

`cpp

#include <vector>

#include <algorithm>

#include <iostream>

using namespace std;

bool cmp(pair<int, string> a, pair<int, string> b){

return a.second < b.second;

}

int main(){