数组排序c++代码(c++数组快速排序)

# 数组排序C++代码## 简介 在计算机科学中,数组是一种基础的数据结构,用于存储具有相同数据类型的元素集合。对数组进行排序是许多算法和程序的核心部分。C++提供了多种方法来实现数组的排序,包括标准库函数和自定义实现的排序算法。本文将介绍几种常见的数组排序方法,并通过C++代码示例展示其实现过程。---## 一、使用C++标准库中的`sort`函数 C++ STL(Standard Template Library)提供了一个强大的排序函数`std::sort`,可以快速对数组或向量进行排序。### 内容详细说明 `std::sort`是一个非常高效的排序函数,默认按照升序排列。如果需要降序排列,可以通过第三个参数指定比较函数。以下是代码示例:```cpp #include #include // 包含sort函数 using namespace std;int main() {int arr[] = {5, 2, 9, 1, 7};int n = sizeof(arr) / sizeof(arr[0]);// 使用std::sort进行升序排序sort(arr, arr + n);cout << "Sorted array (ascending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;// 使用std::sort进行降序排序sort(arr, arr + n, greater());cout << "Sorted array (descending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0; } ```

运行结果:

``` Sorted array (ascending): 1 2 5 7 9 Sorted array (descending): 9 7 5 2 1 ```---## 二、冒泡排序算法 冒泡排序是一种简单直观的排序算法,通过多次比较和交换相邻元素来完成排序。### 内容详细说明 冒泡排序的时间复杂度为O(n²),适合小规模数据的排序。以下是实现代码:```cpp #include using namespace std;void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {// 每一轮确定一个最大值的位置for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {swap(arr[j], arr[j + 1]); // 交换元素}}} }int main() {int arr[] = {5, 2, 9, 1, 7};int n = sizeof(arr) / sizeof(arr[0]);cout << "Original array: ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;bubbleSort(arr, n);cout << "Sorted array (ascending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0; } ```

运行结果:

``` Original array: 5 2 9 1 7 Sorted array (ascending): 1 2 5 7 9 ```---## 三、快速排序算法 快速排序是一种分治算法,其时间复杂度平均为O(n log n),性能优于冒泡排序。### 内容详细说明 快速排序通过选择一个“基准”元素,将数组分为左右两部分,左边小于基准值,右边大于基准值,然后递归处理左右子数组。```cpp #include using namespace std;void quickSort(int arr[], int low, int high) {if (low < high) {// 找到分区点int pivotIndex = partition(arr, low, high);// 分别对左右子数组进行排序quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex + 1, high);} }int partition(int arr[], int low, int high) {int pivot = arr[high]; // 选择最后一个元素作为基准int i = (low - 1); // 小于基准的索引位置for (int j = low; j <= high - 1; j++) {if (arr[j] < pivot) {i++;swap(arr[i], arr[j]);}}swap(arr[i + 1], arr[high]);return (i + 1); }int main() {int arr[] = {5, 2, 9, 1, 7};int n = sizeof(arr) / sizeof(arr[0]);cout << "Original array: ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;quickSort(arr, 0, n - 1);cout << "Sorted array (ascending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0; } ```

运行结果:

``` Original array: 5 2 9 1 7 Sorted array (ascending): 1 2 5 7 9 ```---## 四、总结 本文介绍了三种常见的数组排序方法: 1. 使用C++标准库中的`std::sort`函数,高效且简洁。 2. 冒泡排序,适用于小规模数据的排序。 3. 快速排序,性能优异,适合大规模数据。根据实际需求选择合适的排序算法,能够有效提升程序效率。希望本文能帮助你更好地理解并应用C++中的数组排序技术!

数组排序C++代码

简介 在计算机科学中,数组是一种基础的数据结构,用于存储具有相同数据类型的元素集合。对数组进行排序是许多算法和程序的核心部分。C++提供了多种方法来实现数组的排序,包括标准库函数和自定义实现的排序算法。本文将介绍几种常见的数组排序方法,并通过C++代码示例展示其实现过程。---

一、使用C++标准库中的`sort`函数 C++ STL(Standard Template Library)提供了一个强大的排序函数`std::sort`,可以快速对数组或向量进行排序。

内容详细说明 `std::sort`是一个非常高效的排序函数,默认按照升序排列。如果需要降序排列,可以通过第三个参数指定比较函数。以下是代码示例:```cpp

include

include // 包含sort函数 using namespace std;int main() {int arr[] = {5, 2, 9, 1, 7};int n = sizeof(arr) / sizeof(arr[0]);// 使用std::sort进行升序排序sort(arr, arr + n);cout << "Sorted array (ascending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;// 使用std::sort进行降序排序sort(arr, arr + n, greater());cout << "Sorted array (descending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0; } ```**运行结果:** ``` Sorted array (ascending): 1 2 5 7 9 Sorted array (descending): 9 7 5 2 1 ```---

二、冒泡排序算法 冒泡排序是一种简单直观的排序算法,通过多次比较和交换相邻元素来完成排序。

内容详细说明 冒泡排序的时间复杂度为O(n²),适合小规模数据的排序。以下是实现代码:```cpp

include using namespace std;void bubbleSort(int arr[], int n) {for (int i = 0; i < n - 1; i++) {// 每一轮确定一个最大值的位置for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {swap(arr[j], arr[j + 1]); // 交换元素}}} }int main() {int arr[] = {5, 2, 9, 1, 7};int n = sizeof(arr) / sizeof(arr[0]);cout << "Original array: ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;bubbleSort(arr, n);cout << "Sorted array (ascending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0; } ```**运行结果:** ``` Original array: 5 2 9 1 7 Sorted array (ascending): 1 2 5 7 9 ```---

三、快速排序算法 快速排序是一种分治算法,其时间复杂度平均为O(n log n),性能优于冒泡排序。

内容详细说明 快速排序通过选择一个“基准”元素,将数组分为左右两部分,左边小于基准值,右边大于基准值,然后递归处理左右子数组。```cpp

include using namespace std;void quickSort(int arr[], int low, int high) {if (low < high) {// 找到分区点int pivotIndex = partition(arr, low, high);// 分别对左右子数组进行排序quickSort(arr, low, pivotIndex - 1);quickSort(arr, pivotIndex + 1, high);} }int partition(int arr[], int low, int high) {int pivot = arr[high]; // 选择最后一个元素作为基准int i = (low - 1); // 小于基准的索引位置for (int j = low; j <= high - 1; j++) {if (arr[j] < pivot) {i++;swap(arr[i], arr[j]);}}swap(arr[i + 1], arr[high]);return (i + 1); }int main() {int arr[] = {5, 2, 9, 1, 7};int n = sizeof(arr) / sizeof(arr[0]);cout << "Original array: ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;quickSort(arr, 0, n - 1);cout << "Sorted array (ascending): ";for (int i = 0; i < n; i++) {cout << arr[i] << " ";}cout << endl;return 0; } ```**运行结果:** ``` Original array: 5 2 9 1 7 Sorted array (ascending): 1 2 5 7 9 ```---

四、总结 本文介绍了三种常见的数组排序方法: 1. 使用C++标准库中的`std::sort`函数,高效且简洁。 2. 冒泡排序,适用于小规模数据的排序。 3. 快速排序,性能优异,适合大规模数据。根据实际需求选择合适的排序算法,能够有效提升程序效率。希望本文能帮助你更好地理解并应用C++中的数组排序技术!

标签列表