21xrx.com
2024-12-22 21:20:37 Sunday
登录
文章检索 我的文章 写文章
C++中如何对一个数组进行排序
2023-07-06 15:01:22 深夜i     --     --
C++ 数组 排序

在C++中,对数组进行排序是一个非常常见的操作。排序是指将数据按照一定的规则重新排列,使其按照一定的规律排列,以方便后续操作。C++中有多种排序算法可供选择,本文将介绍一些常见的算法。

1. 冒泡排序

冒泡排序是一种非常简单直观的排序算法。其基本思想是从数组的第一个元素开始,依次比较相邻的两个元素,如果前一个元素比后一个元素大,则交换位置,这样一轮排序下来,最大的元素就被排到了数组的末尾。然后再对除最后一个元素以外的其它元素进行相同的操作,直到所有元素都排好序为止。

下面是冒泡排序的代码实现:


void bubbleSort(int arr[], int n)

{

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

  {

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

    {

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

      {

        int temp = arr[j+1];

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

        arr[j] = temp;

      }

    }

  }

}

2. 插入排序

插入排序也是一个简单的排序算法,其基本思想是将未排序的元素从第一个元素开始插入到已排序的序列中的合适位置,直到所有元素都排好序为止。

下面是插入排序的代码实现:


void insertionSort(int arr[], int n)

{

  for (int i = 1; i < n; 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;

  }

}

3. 快速排序

快速排序是一种比较高效的排序算法,其基本思想是通过选择一个枢轴元素,将小于该元素的元素放在其左边,大于该元素的元素放在其右边,然后递归地对左右两个子序列进行排序。

下面是快速排序的代码实现:


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);

}

除了以上三种排序算法之外,C++中还有其它比较常见的排序算法,比如选择排序、归并排序等。选择合适的排序算法取决于实际应用的场景和数据的特性。

  
  

评论区

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