# 简介排序算法是计算机科学中的基础算法之一,广泛应用于数据处理、搜索引擎、数据库等领域。在C++中,排序算法可以通过标准库函数和自定义实现来完成。本文将详细介绍几种常见的排序算法,并展示其在C++中的具体实现。# 多级标题1. 冒泡排序
2. 选择排序
3. 插入排序
4. 快速排序
5. 归并排序
6. 标准库中的排序函数# 内容详细说明## 冒泡排序冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。```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]) {// 交换元素int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr)/sizeof(arr[0]);bubbleSort(arr, n);cout << "Sorted array: ";for (int i=0; i
using namespace std;void selectionSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int min_idx = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[min_idx])min_idx = j;}if (min_idx != i) {int temp = arr[min_idx];arr[min_idx] = arr[i];arr[i] = temp;}}
}int main() {int arr[] = {64, 25, 12, 22, 11};int n = sizeof(arr)/sizeof(arr[0]);selectionSort(arr, n);cout << "Sorted array: ";for (int i=0; i
using namespace std;void insertionSort(int arr[], int n) {for (int i = 1; i < n; i++) {int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j = j - 1;}arr[j + 1] = key;}
}int main() {int arr[] = {12, 11, 13, 5, 6};int n = sizeof(arr)/sizeof(arr[0]);insertionSort(arr, n);cout << "Sorted array: ";for (int i=0; i
using namespace std;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);
}void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}
}int main() {int arr[] = {10, 7, 8, 9, 1, 5};int n = sizeof(arr)/sizeof(arr[0]);quickSort(arr, 0, n-1);cout << "Sorted array: ";for (int i=0; i
using namespace std;void merge(int arr[], int l, int m, int r) {int i, j, k;int n1 = m - l + 1;int n2 = r - m;int L[n1], R[n2];for (i = 0; i < n1; i++)L[i] = arr[l + i];for (j = 0; j < n2; j++)R[j] = arr[m + 1 + j];i = 0;j = 0;k = l;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++;}while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}void mergeSort(int arr[], int l, int r) {if (l < r) {int m = l + (r - l) / 2;mergeSort(arr, l, m);mergeSort(arr, m + 1, r);merge(arr, l, m, r);}
}int main() {int arr[] = {12, 11, 13, 5, 6, 7};int arr_size = sizeof(arr) / sizeof(arr[0]);mergeSort(arr, 0, arr_size - 1);cout << "\nSorted array is \n";for (int i = 0; i < arr_size; i++)cout << arr[i] << " ";return 0;
}
```## 标准库中的排序函数C++ STL提供了多种排序算法,包括`sort()`、`stable_sort()`等。这些函数封装了底层的高效排序算法,可以直接用于排序任务。```cpp
#include
#include
using namespace std;int main() {int arr[] = {10, 7, 8, 9, 1, 5};int n = sizeof(arr)/sizeof(arr[0]);sort(arr, arr+n);cout << "Sorted array: ";for (int i=0; i 简介排序算法是计算机科学中的基础算法之一,广泛应用于数据处理、搜索引擎、数据库等领域。在C++中,排序算法可以通过标准库函数和自定义实现来完成。本文将详细介绍几种常见的排序算法,并展示其在C++中的具体实现。
多级标题1. 冒泡排序
2. 选择排序
3. 插入排序
4. 快速排序
5. 归并排序
6. 标准库中的排序函数
内容详细说明
冒泡排序冒泡排序是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复进行直到没有再需要交换,也就是说该数列已经排序完成。```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]) {// 交换元素int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}
}int main() {int arr[] = {64, 34, 25, 12, 22, 11, 90};int n = sizeof(arr)/sizeof(arr[0]);bubbleSort(arr, n);cout << "Sorted array: ";for (int i=0; i 选择排序选择排序是一种简单直观的排序算法。它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(或最大)元素,放到已排序序列的末尾。```cpp
include
using namespace std;void selectionSort(int arr[], int n) {for (int i = 0; i < n-1; i++) {int min_idx = i;for (int j = i+1; j < n; j++) {if (arr[j] < arr[min_idx])min_idx = j;}if (min_idx != i) {int temp = arr[min_idx];arr[min_idx] = arr[i];arr[i] = temp;}}
}int main() {int arr[] = {64, 25, 12, 22, 11};int n = sizeof(arr)/sizeof(arr[0]);selectionSort(arr, n);cout << "Sorted array: ";for (int i=0; i 插入排序插入排序是一种简单直观的排序算法。它的基本操作就是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。```cpp
include
using namespace std;void insertionSort(int arr[], int n) {for (int i = 1; i < n; i++) {int key = arr[i];int j = i - 1;while (j >= 0 && arr[j] > key) {arr[j + 1] = arr[j];j = j - 1;}arr[j + 1] = key;}
}int main() {int arr[] = {12, 11, 13, 5, 6};int n = sizeof(arr)/sizeof(arr[0]);insertionSort(arr, n);cout << "Sorted array: ";for (int i=0; i 快速排序快速排序是一种高效的排序算法,由C. A. R. Hoare在1960年提出。它使用分治法策略来把一个序列分为较小和较大的两个子序列,然后递归地排序两个子序列。```cpp
include
using namespace std;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);
}void quickSort(int arr[], int low, int high) {if (low < high) {int pi = partition(arr, low, high);quickSort(arr, low, pi - 1);quickSort(arr, pi + 1, high);}
}int main() {int arr[] = {10, 7, 8, 9, 1, 5};int n = sizeof(arr)/sizeof(arr[0]);quickSort(arr, 0, n-1);cout << "Sorted array: ";for (int i=0; i 归并排序归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。```cpp
include
using namespace std;void merge(int arr[], int l, int m, int r) {int i, j, k;int n1 = m - l + 1;int n2 = r - m;int L[n1], R[n2];for (i = 0; i < n1; i++)L[i] = arr[l + i];for (j = 0; j < n2; j++)R[j] = arr[m + 1 + j];i = 0;j = 0;k = l;while (i < n1 && j < n2) {if (L[i] <= R[j]) {arr[k] = L[i];i++;} else {arr[k] = R[j];j++;}k++;}while (i < n1) {arr[k] = L[i];i++;k++;}while (j < n2) {arr[k] = R[j];j++;k++;}
}void mergeSort(int arr[], int l, int r) {if (l < r) {int m = l + (r - l) / 2;mergeSort(arr, l, m);mergeSort(arr, m + 1, r);merge(arr, l, m, r);}
}int main() {int arr[] = {12, 11, 13, 5, 6, 7};int arr_size = sizeof(arr) / sizeof(arr[0]);mergeSort(arr, 0, arr_size - 1);cout << "\nSorted array is \n";for (int i = 0; i < arr_size; i++)cout << arr[i] << " ";return 0;
}
```
标准库中的排序函数C++ STL提供了多种排序算法,包括`sort()`、`stable_sort()`等。这些函数封装了底层的高效排序算法,可以直接用于排序任务。```cpp
include
include
using namespace std;int main() {int arr[] = {10, 7, 8, 9, 1, 5};int n = sizeof(arr)/sizeof(arr[0]);sort(arr, arr+n);cout << "Sorted array: ";for (int i=0; i