21xrx.com
2024-06-03 06:54:45 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++ 数字排序算法实现。对于不同的排序场景,选用不同的算法能够提高程序的效率。在实际开发中,也可以根据需要对算法进行优化。

  
  

评论区

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