21xrx.com
2025-03-26 11:56:25 Wednesday
文章检索 我的文章 写文章
C++基础:从大到小排序
2023-07-05 16:28:17 深夜i     --     --
C++ 基础 排序 从大到小 算法

对于初学者来说,学习C++基础排序算法是必不可少的步骤。其中,从大到小排序的算法是一个基础而重要的部分,本文将介绍几种常见的从大到小排序算法。

1. 冒泡排序

冒泡排序是一种简单而常见的排序算法。它基于不断比较相邻两个元素的大小,如果前者比后者大,则交换它们的位置。一次冒泡可以确定一个元素的位置,重复执行n-1次即可完成所有元素的排序。

其具体实现如下:

void bubbleSort(int arr[], int n){
  for (int i = 0; i < n-1; i++){
    for (int j = 0; j < n-1-i; j++){
      if (arr[j] < arr[j+1]){
        swap(arr[j], arr[j+1]);
      }
    }
  }
}

2. 快速排序

快速排序是一种高效的排序算法。它基于分治的思想,将待排序序列分为两部分,一部分是小于基准值的序列,另一部分是大于基准值的序列,然后在两部分中分别递归执行同样的操作,直到序列长度为1,即完成排序。

其具体实现如下:

int partition(int arr[], int low, int high){
  int pivot = arr[low];
  while (low < high){
    while (low < high && arr[high] <= pivot) high--;
    arr[low] = arr[high];
    while (low < high && arr[low] >= pivot) low++;
    arr[high] = arr[low];
  }
  arr[low] = pivot;
  return low;
}
void quickSort(int arr[], int low, int high){
  if (low < high){
    int pos = partition(arr, low, high);
    quickSort(arr, low, pos-1);
    quickSort(arr, pos+1, high);
  }
}

3. 插入排序

插入排序是一种简单而稳定的排序算法。它维护一个已排序区间和一个未排序区间,每次从未排序区间中取出一个元素插入到已排序区间的正确位置,重复执行n-1次可完成排序。

其具体实现如下:

void insertSort(int arr[], int n){
  for (int i = 1; i < n; i++){
    int j = i-1;
    int key = arr[i];
    while (j >= 0 && arr[j] < key){
      arr[j+1] = arr[j];
      j--;
    }
    arr[j+1] = key;
  }
}

通过以上三种从大到小排序的算法,可以帮助初学者掌握基础的排序思想和技巧。然而,针对不同的数据特征和需求,还有很多其他的排序算法可以进行选用和优化,需要进一步学习和实践。

  
  

评论区