21xrx.com
2024-06-03 03:34:49 Monday
登录
文章检索 我的文章 写文章
C++ 数组排序方法
2023-07-12 13:15:54 深夜i     --     --
C++ 数组 排序 算法 调用

C++是一门高级编程语言,它支持多种数据结构,其中数组是最基本的一种。在许多应用场景中,我们需要对数组进行排序以便更方便地使用它们。下面是C++中几种用于对数组排序的方法。

1. 冒泡排序

冒泡排序是C++中最常见的排序算法之一。它通过比较相邻的元素并交换它们的位置来达到排序目的。这个过程会重复多次,每次都将待排序的元素中最大的一个放到最后一位。其时间复杂度为O(n²)。

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


void bubbleSort(int arr[], int n)

{

  int i, j;

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

  {

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

    {

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

      {

        swap(arr[j], arr[j + 1]);

      }

    }

  }

}

2. 快速排序

快速排序是另一种基于比较的排序算法,它的工作原理是选择一个基准元素,将小于基准元素的值放到左边,大于基准元素的值放到右边,然后递归地对左右两个子序列进行排序。因为快速排序的效率非常高,所以它是最常用的排序算法之一。

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


int partition (int arr[], int low, int high)

{

  int pivot = arr[high]; 

  int i = (low - 1); 

  for (int j = low; j <= high- 1; j++)

  {

    if (arr[j] <= pivot)

    {

      i++; 

      swap(arr[i], arr[j]);

    }

  }

  swap(arr[i + 1], arr[high]);

  return (i + 1);

}

void quickSort(int arr[], int low, int high)

{

  if (low < high)

  {

    int pi = partition(arr, low, high);

    quickSort(arr, low, pi - 1);

    quickSort(arr, pi + 1, high);

  }

}

3. 插入排序

插入排序是一种比较简单的排序算法,它的思想是将一个待排序的元素插入到已排序的数组中的合适位置。插入排序分为直接插入排序和二分插入排序两种,其中直接插入排序是比较基础的一种,二分插入排序是直接插入排序的改进版。

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


void insertionSort(int arr[], int n) 

  int i, key, j; 

  for (i = 1; i < n; i++)

  { 

    key = arr[i]; 

    j = i - 1; 

 

    /* Move elements of arr[0..i-1], that are 

    greater than key, to one position ahead 

    of their current position */

    while (j >= 0 && arr[j] > key)

    { 

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

      j = j - 1; 

    } 

    arr[j + 1] = key; 

  } 

总之,C++提供了多种排序算法供我们使用,每个算法都有其优劣性和适用场景。因此,在实际编程过程中,我们应该根据实际情况选择合适的算法。

  
  

评论区

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