21xrx.com
2025-03-31 20:02:46 Monday
文章检索 我的文章 写文章
C++ 数字排序算法实现
2023-07-02 16:50:05 深夜i     --     --
C++ 数字排序 算法实现 冒泡排序 快速排序

C++ 数字排序算法是程序开发过程中常见的算法实现。排序算法的目的是将一组数据按照一定规则排列,使得数据能够更方便地被查找和使用。常见的排序算法有插入排序、选择排序、冒泡排序、快速排序等。下面介绍几种常见的 C++ 数字排序算法实现。

1. 冒泡排序:比较相邻的两个元素,如果前者大于后者,则交换位置,直到将最大的数移动到最后。重复此过程直到将所有数排序完成。

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

2. 快速排序:通过选定一个基准点(pivot),将数组分成左右两部分,左边部分的数均小于等于 pivot,右边部分的数均大于等于 pivot。然后递归地对左、右两部分数据进行快速排序。

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

3. 插入排序:从数组的第二个元素开始,将元素插入到已经排好序的序列中,直到所有元素都排完为止。

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

4. 选择排序:从数组中选择最小的元素放到第一个位置,然后从剩余的元素中选择最小的元素放到第二个位置,以此类推。

void SelectionSort(int arr[], int size)
{
  for(int i = 0; i < size - 1; i++)
  {
    int minIndex = i;
    for(int j = i + 1; j < size; j++)
    {
      if(arr[j] < arr[minIndex])
      
        minIndex = j;
      
    }
    if(minIndex != i)
    {
      int temp = arr[i];
      arr[i] = arr[minIndex];
      arr[minIndex] = temp;
    }
  }
}

以上是常用的几种 C++ 数字排序算法实现。对于不同的排序场景,选用不同的算法能够提高程序的效率。在实际开发中,也可以根据需要对算法进行优化。

  
  

评论区