21xrx.com
2024-12-22 20:08:19 Sunday
登录
文章检索 我的文章 写文章
C++排序算法总结
2023-07-05 10:04:47 深夜i     --     --
C++ 排序算法 总结

C++是一种广泛使用的编程语言,主要用于软件开发、数据科学和机器学习等领域。排序算法是C++编程中不可或缺的部分之一,它们被用于按照特定的顺序对数据进行排序。本文旨在总结C++排序算法的一些重要知识点和使用方法。

常见的排序算法包括冒泡排序、插入排序、选择排序、快速排序、归并排序和堆排序。这些算法都有各自的优势和缺点,开发人员可以根据排序数据的大小和类型来选择最适合的算法。下面是每种算法的简要介绍:

1. 冒泡排序

冒泡排序是一种简单的排序算法,它通过交换相邻的元素将较大的元素逐渐向右移动,直到所有元素按照从小到大的顺序排列。这种算法的时间复杂度为O(n^2)。

2. 插入排序

插入排序是另一种简单的排序算法,它从未排序的数据中逐个选择数据,并将其插入到已排序的序列中。这种算法的时间复杂度为O(n^2),但在处理小型数据集时,它通常比其他算法更快。

3. 选择排序

选择排序是一种简单的排序算法,它通过选择最小的元素并将其放置到有序序列的末尾来对数据进行排序。选择排序的时间复杂度为O(n^2)。

4. 快速排序

快速排序是一种常用的排序算法,它通过选择一个基准元素,并将所有小于基准元素的数据放置在一侧,将所有大于基准元素的数据放置在另一侧来对数据进行排序。这种算法的时间复杂度为O(nlog(n))。

5. 归并排序

归并排序是一种基于分治策略的排序算法,它将数据集分成两个部分,并对每个子集进行递归排序,最后将它们合并到一起。这种算法的时间复杂度为O(nlog(n))。

6. 堆排序

堆排序是一种高效的排序算法,它使用堆数据结构来对数据进行排序。堆排序的时间复杂度为O(nlog(n))。

以上是C++常见的排序算法,下面提供一个示例代码,演示如何使用快速排序对int类型的数组进行排序。


#include <iostream>

#include <algorithm>

using namespace std;

void quickSort(int arr[], int left, int right) {

  int i = left, j = right;

  int tmp;

  int pivot = arr[(left + right) / 2];

  /* partition */

  while (i <= j) {

    while (arr[i] < pivot)

      i++;

    while (arr[j] > pivot)

      j--;

    if (i <= j) {

      tmp = arr[i];

      arr[i] = arr[j];

      arr[j] = tmp;

      i++;

      j--;

    }

  };

  /* recursion */

  if (left < j)

    quickSort(arr, left, j);

  if (i < right)

    quickSort(arr, i, right);

}

int main() {

  int arr[] = 4;

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

  quickSort(arr, 0, n-1);

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

    cout << arr[i] << endl;

  return 0;

}

以上代码将输出排序后的数组:1 2 3 4 5 6 7 8 9。

总之,C++排序算法是编程中必不可少的一部分。在开发过程中,开发人员可以根据数据规模和类型的不同,选择最合适的排序算法以提高程序性能和效率。

  
  

评论区

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