21xrx.com
2024-12-23 01:33:09 Monday
登录
文章检索 我的文章 写文章
C++ 数组排序算法
2023-06-30 17:49:39 深夜i     --     --
C++ 数组 排序算法

C++是一种高效而又功能强大的编程语言,拥有丰富的数据类型和数据结构,其中最常用的数据结构之一就是数组。数组可以保存一组同类数据,而数组排序算法可以让我们对这些数据进行快速有效的排序。

在C++中,有多种数组排序算法,主要有冒泡排序、选择排序、插入排序、快速排序、归并排序等。这些算法各有特点,我们可以根据具体情况选择使用。

冒泡排序是最基本的排序算法之一,其基本思想是通过不断交换相邻的元素把大的元素往后调。在C++中,实现冒泡排序可以使用两个for循环,具体实现如下:


void bubble_sort(int arr[], int len)

{

  for(int i = 0; i < len - 1; i++)

  {

    for(int j = 0; j < len - i - 1; j++)

    {

      if(arr[j] > arr[j+1])

      {

        int temp = arr[j];

        arr[j] = arr[j+1];

        arr[j+1] = temp;

      }

    }

  }

}

选择排序和插入排序也是常见的排序算法。选择排序的思路是每次找到最小的元素,并将其放到数组的起始位置,然后对剩余的元素进行类似的操作;而插入排序则是从未排序部分的第一个元素开始,将其插入到已排序部分的合适位置,然后继续进行同样的操作。

快速排序是一种高效的排序算法,其基本思想是通过分治法将一个大数组分成两个小数组,其中较小或较大的数组元素放在左侧或右侧,并递归地进行相同的操作。在C++中,实现快速排序可以使用如下代码:


void quick_sort(int arr[], int left, int right)

{

  if(left >= right) return;

  int pivot = arr[left];

  int i = left;

  int j = right;

  while(i < j)

  {

    while(i < j && arr[j] >= pivot) j--;

    arr[i] = arr[j];

    while(i < j && arr[i] <= pivot) i++;

    arr[j] = arr[i];

  }

  arr[i] = pivot;

  quick_sort(arr, left, i-1);

  quick_sort(arr, i+1, right);

}

归并排序是另一种高效的排序算法,其基本思想是先将一个数组分成两个较小的数组,并对这两个数组分别进行排序,然后再将它们合并成一个有序数组。在C++中实现归并排序可以使用如下代码:


void merge_sort(int arr[], int left, int right)

{

  if(left >= right) return;

  int mid = left + (right - left) / 2;

  merge_sort(arr, left, mid);

  merge_sort(arr, mid + 1, right);

  int i = left, j = mid + 1, k = 0;

  int temp[right - left + 1];

  while(i <= mid && j <= right)

  {

    if(arr[i] <= arr[j])

      temp[k++] = arr[i++];

    else

      temp[k++] = arr[j++];

  }

  while(i <= mid) temp[k++] = arr[i++];

  while(j <= right) temp[k++] = arr[j++];

  for(int i = left, k = 0; i <= right; i++, k++)

    arr[i] = temp[k];

}

总的来说,C++提供了多种排序算法,我们可以根据具体情况选择使用。在实际开发中,要根据数据量大小、时间复杂度、空间复杂度等因素进行权衡,从而选择最合适的排序算法。

  
  

评论区

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