C++如何给数组排序

avatar
作者
猴君
阅读量:0

C++提供了多种排序算法来对数组进行排序,其中最常用的是快速排序、归并排序和插入排序。以下是使用这些排序算法对数组进行排序的示例代码:

  1. 快速排序:
#include <iostream> 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[] = {64, 25, 12, 22, 11};     int n = sizeof(arr) / sizeof(arr[0]);          quickSort(arr, 0, n - 1);      cout << "排序后的数组:";     for (int i = 0; i < n; i++)         cout << arr[i] << " ";      return 0; } 
  1. 归并排序:
#include <iostream> using namespace std;  // 合并两个子数组 void merge(int arr[], int l, int m, int r) {     int n1 = m - l + 1;     int n2 = r - m;      int L[n1], R[n2];  // 临时数组      // 将数据复制到临时数组     for (int i = 0; i < n1; i++)         L[i] = arr[l + i];     for (int j = 0; j < n2; j++)         R[j] = arr[m + 1 + j];      // 合并临时数组     int i = 0;     int j = 0;     int 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[] = {64, 25, 12, 22, 11};     int n = sizeof(arr) / sizeof(arr[0]);      mergeSort(arr, 0, n - 1);      cout << "排序后的数组:";     for (int i = 0; i < n; i++)         cout << arr[i] << " ";      return 0; } 
  1. 插入排序:
#include <iostream> using namespace std;  // 插入排序函数 void insertionSort(int arr[], int n) {     int i, key, j;     for (i = 1; i < n; i++) {         key = arr[i];         j = i - 1;          // 将比 key 大的元素向后移动         while (j >= 0 && arr[j] > key) {             arr[j + 1] = arr[j];             j = j - 1;         }         arr[j + 1] = key;     } }  // 测试代码 int main() {     int arr[] = {64, 25, 12, 22, 11};     int n = sizeof(arr) / sizeof(arr[0]);      insertionSort(arr, n);      cout << "排序后的数组:";     for (int i = 0; i < n; i++)         cout << arr

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!