21xrx.com
2024-12-26 14:13:46 Thursday
登录
文章检索 我的文章 写文章
C++如何对数组进行排序?
2023-07-06 04:26:25 深夜i     --     --
C++ 数组 排序 方法 示例

在C++中,对数组进行排序是常见的操作。排序可以让数组中的元素按照一定的顺序排列,便于查找和比较,提高程序的效率。那么,C++如何对数组进行排序呢?下面介绍几种常用的排序方法。

1. 冒泡排序

冒泡排序是一种简单的排序方法,它将相邻的两个元素进行比较,如果它们的顺序与排序要求不符,则交换它们的位置,直到整个序列都排好序为止。例如:


void bubble_sort(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];

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

        arr[j+1] = temp;

      }

    }

  }

}

2. 插入排序

插入排序是一种简单而有效的排序方法,它将未排序的元素逐个插入到已排序部分的正确位置上,直到整个序列都排好序为止。例如:


void insertion_sort(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 quick_sort(int arr[], int left, int right) {

  if (left >= right)

    return;

  

  int pivot = arr[right];

  int i = left, j = right - 1;

  while (i < j) {

    while (i < j && arr[i] < pivot) {

      i++;

    }

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

      j--;

    

    if (i < j) {

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

    }

  }

  if (arr[i] >= pivot) {

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

  } else {

    i++;

  }

  quick_sort(arr, left, i-1);

  quick_sort(arr, i+1, right);

}

以上是三种常用的排序方法,它们都可以对数组进行排序。在实际使用中,根据不同的场景和要求,选择不同的排序算法,可以有效地提升程序的效率。

  
  

评论区

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