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

C++作为一种高效的计算机程序设计语言,广泛应用于各种领域。在程序设计中,数组排序是一种常见的问题,因为它可以提高程序的运行效率和准确性。下面我们来了解一下C++中如何对数组进行排序。

使用标准库函数排序

C++标准库提供了sort函数,可以对数组进行排序。sort函数可以接受三个参数:数组的起始地址、数组的结束地址和一个比较函数。比较函数是用来比较数组中的元素的大小,它返回一个bool值,表示两个元素的大小关系。例如:


#include <algorithm> //必须包含这个头文件才能使用sort函数

using namespace std;

bool cmp(int a, int b)

  return a > b; //降序排序

int main(){

  int arr[5] = 3;

  sort(arr, arr+5); //默认升序排序

  for(int i = 0; i < 5; i++){

    cout << arr[i] << " ";

  }

  sort(arr, arr+5, cmp); //降序排序

  for(int i = 0; i < 5; i++){

    cout << arr[i] << " ";

  }

  return 0;

}

使用冒泡排序

冒泡排序是一种简单的排序算法,在C++中也可以使用。冒泡排序的基本思想是比较相邻的两个元素,如果它们的顺序错误就交换它们,一直重复这个过程,直到整个数组排好序为止。例如:


#include <iostream>

using namespace std;

void bubble_sort(int arr[], int len){

  for(int i = 0; i < len - 1; i++){ //外层循环控制排序的轮数

    for(int j = 0; j < len - 1 - i; j++){ //内层循环控制每一轮排序的比较次数

      if(arr[j] > arr[j+1]){ //如果前一个数大于后一个数就交换它们的位置

        int temp = arr[j];

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

        arr[j+1] = temp;

      }

    }

  }

}

int main(){

  int arr[5] = 5;

  bubble_sort(arr, 5);

  for(int i = 0; i < 5; i++){

    cout << arr[i] << " ";

  }

  return 0;

}

使用快速排序

快速排序是一种高效的排序算法,在C++中也可以使用。快速排序的基本思想是选取一个基准元素,将数组中小于等于它的元素完全放在它的左边,将数组中大于等于它的元素完全放在它的右边,然后对左右两个子数组进行递归排序。例如:


#include <iostream>

using namespace std;

int partition(int arr[], int left, int right){

  int pivot = arr[left]; //选取第一个元素作为基准元素

  while(left < right){

    while(left < right && arr[right] >= pivot) //从右端开始查找比基准元素小的数

      right--;

    

    arr[left] = arr[right]; //将比基准元素小的数放到左边

    while(left < right && arr[left] <= pivot){ //从左端开始查找比基准元素大的数

      left++;

    }

    arr[right] = arr[left]; //将比基准元素大的数放到右边

  }

  arr[left] = pivot;

  return left; //返回基准元素的位置

}

void quick_sort(int arr[], int left, int right){

  if(left < right){

    int mid = partition(arr, left, right);

    quick_sort(arr, left, mid - 1); //对左半部分进行递归排序

    quick_sort(arr, mid + 1, right); //对右半部分进行递归排序

  }

}

int main(){

  int arr[5] = 3;

  quick_sort(arr, 0, 4);

  for(int i = 0; i < 5; i++){

    cout << arr[i] << " ";

  }

  return 0;

}

总结

以上介绍了C++中三种常见的数组排序方法:使用标准库函数排序、使用冒泡排序和使用快速排序。在选择具体的排序算法时,应根据数据结构的特点和使用场景进行综合考虑。高效的排序算法可以大大提高程序的运行效率和准确性,是程序设计中不可忽视的重要环节。

  
  

评论区

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