21xrx.com
2024-12-22 21:09:06 Sunday
登录
文章检索 我的文章 写文章
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;

  }

}

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

  
  

评论区

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