21xrx.com
2025-03-31 03:37:37 Monday
文章检索 我的文章 写文章
C++排序算法详解
2023-06-22 16:18:36 深夜i     15     0
C++ 排序算法 详解

C++是一种常用的编程语言,它内置了许多常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序等等。在C++语言中使用这些排序算法能够更快速、更有效地进行排序操作,提高程序运行效率和排序质量,让编程更加高效。

1. 冒泡排序

冒泡排序是一种比较简单的排序方法,它的原理是将相邻两个元素进行比较交换位置。在C++语言中实现冒泡排序的代码可以如下:

void BubbleSort(int a[], int n)
{
  for (int i = 0; i < n; i++)
  {
    for (int j = 0; j < n - 1 - i; j++)
    {
      if (a[j] > a[j+1])
      {
        int temp = a[j];
        a[j] = a[j+1];
        a[j+1] = temp;
      }
    }
  }
}

2. 选择排序

选择排序是一种基于比较的排序算法,它的原理是依次找到数组中的最小元素,然后将它与数组的第一个元素进行交换,接着在剩下的元素中找到最小元素,然后将它与数组的第二个元素进行交换,以此类推,直到数组被完全排序。在C++语言中实现选择排序的代码可以如下:

void SelectionSort(int a[], int n)
{
  for (int i = 0; i < n; i++)
  {
    int minIndex = i;
    for (int j = i + 1; j < n; j++)
    {
      if (a[j] < a[minIndex])
      
        minIndex = j;
      
    }
    int temp = a[i];
    a[i] = a[minIndex];
    a[minIndex] = temp;
  }
}

3. 插入排序

插入排序是一种基于交换的排序算法,它的原理是将数组中的元素逐个插入到已经排好序的序列中。在C++语言中实现插入排序的代码可以如下:

void InsertionSort(int a[], int n)
{
  for (int i = 1; i < n; i++)
  {
    int key = a[i];
    int j = i - 1;
    while (j >= 0 && a[j] > key)
    {
      a[j+1] = a[j];
      j--;
    }
    a[j+1] = key;
  }
}

4. 快速排序

快速排序是一种基于分治思想的排序算法,它的原理是将数组划分为两个子数组,然后对这两个子数组分别进行排序,最终将这两个子数组合并成一个有序数组。在C++语言中实现快速排序的代码可以如下:

void QuickSort(int a[], int left, int right)
{
  if (left >= right)
    return;
  int i = left, j = right, pivot = a[(left + right) / 2];
  while (i <= j)
  {
    while (a[i] < pivot)
      i++;
    while (a[j] > pivot)
      j--;
    if (i <= j)
    {
      int temp = a[i];
      a[i] = a[j];
      a[j] = temp;
      i++;
      j--;
    }
  }
  QuickSort(a, left, j);
  QuickSort(a, i, right);
}

综上所述,冒泡排序、选择排序、插入排序、快速排序是C++语言中常用的排序算法。在实际编程中,我们可以根据应用场景的需要选择不同的算法,从而达到更好的排序效果。

  
  

评论区