21xrx.com
2024-12-22 23:35:19 Sunday
登录
文章检索 我的文章 写文章
C++ 数字排序技巧分享
2023-06-29 17:51:26 深夜i     --     --
C++ 数字 排序 技巧 分享

C++是一款功能强大的编程语言,在处理数字时,特别是在对数字进行排序时,有许多技巧和方法可供选择。在本文中,我们将探讨一些C++数字排序的技巧,以帮助您提高代码质量和效率。

1. 内置sort()函数

C++中内置的sort()函数可以对数组或向量等数据结构进行排序。它使用快速排序算法,在大多数情况下都能高效地进行排序。以下是使用sort()函数对数组进行排序的示例代码。


#include <algorithm>

#include <iostream>

using namespace std;

int main() {

  int arr[] = 10;

  int n = sizeof(arr) / sizeof(arr[0]);

  sort(arr, arr + n);

  for (int i = 0; i < n; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

2. 使用自定义比较函数

sort()函数提供了第三个参数,可以使用一个自定义的比较函数。这样可以更灵活地控制排序的方式。以下是使用自定义比较函数对数组进行降序排序的示例代码。


#include <algorithm>

#include <iostream>

using namespace std;

bool cmp(int a, int b)

  return a > b;

int main() {

  int arr[] = 7;

  int n = sizeof(arr) / sizeof(arr[0]);

  sort(arr, arr + n, cmp);

  for (int i = 0; i < n; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

3. 计数排序

计数排序是一种简单的排序算法,适用于一定范围内的整数排序。它使用一个计数数组,统计数组中每个元素出现的次数,并根据计数数组来对原数组进行排序。以下是使用计数排序对数组进行排序的示例代码。


#include <iostream>

using namespace std;

void countSort(int arr[], int n) {

  int max = arr[0];

  for (int i = 1; i < n; i++) {

    if (arr[i] > max) {

      max = arr[i];

    }

  }

  int count[max + 1] = { 0 };

  for (int i = 0; i < n; i++) {

    count[arr[i]]++;

  }

  for (int i = 0, j = 0; i <= max; i++) {

    while (count[i]-- > 0) {

      arr[j++] = i;

    }

  }

}

int main() {

  int arr[] = 8 ;

  int n = sizeof(arr) / sizeof(arr[0]);

  countSort(arr, n);

  for (int i = 0; i < n; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

4. 快速排序

快速排序是一种高效的排序算法。它使用分治法和递归的思想,将原数组不断划分成更小的部分,直到部分不能再划分为止。以下是使用快速排序对数组进行排序的示例代码。


#include <iostream>

using namespace std;

int partition(int arr[], int low, int high) {

  int pivot = arr[low];

  while (low < high) {

    while (low < high && arr[high] >= pivot)

      high--;

    

    arr[low] = arr[high];

    while (low < high && arr[low] <= pivot) {

      low++;

    }

    arr[high] = arr[low];

  }

  arr[low] = pivot;

  return low;

}

void quickSort(int arr[], int low, int high) {

  if (low < high) {

    int idx = partition(arr, low, high);

    quickSort(arr, low, idx - 1);

    quickSort(arr, idx + 1, high);

  }

}

int main() {

  int arr[] = 7;

  int n = sizeof(arr) / sizeof(arr[0]);

  quickSort(arr, 0, n - 1);

  for (int i = 0; i < n; i++) {

    cout << arr[i] << " ";

  }

  return 0;

}

总之,C++提供了许多不同的方法和技巧,可以方便地对数字进行排序。选择最适合您的需求的方法将可以提高您的代码效率和质量。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复