C++中的sort()和qsort()和C中的二维数组传参

一.目的

最近刷题总会遇到排序,因为快排已经写了很多了,就想省些时间用一下C++中的排序函数。
对于二维数组传参,以前解决过好多次,但总会忘记,所以今天总结一下。

二.排序(头文件: algorithm)
1.sort():对给定区间所有元素进行排序
该函数有两个参数的形式和三个参数的形式。
例如:对于一个一维数组排序. int a[10];
两个参数:

  sort(a, a+10);//两个参数默认是升序排列

三个参数:

sort(a, a+10, compare);//compare是一个由你自己定义的比较函数在这个函数里你可以它是升序还是降序。

compare函数的声明:

int compare(int a, int b);
{
   return a>b;//这里是降序, a<b是升序。
}

2.qsort()
函数原型:
void qsort(void base, size_t nelem, size_t width, int (*fcmp)(const void,const void *))
输入参数:
Base:待排序的数组名
nelem:数组元数的个数(长度)
width:每一个元素所占存储空间的大小
fcmp:用于对数组元素进行比较的函数的指针(该函数是要自己写的)

例子:
对一个一维数组进行排序: int a[10];

qsort(a, sizeof(a), sizeof(int), compare);

具体代码

#include<iostream>
#include<stdlib.h>
using namespace std;
int com(const void *a,const void *b){
    return (*(int*)a-*(int*)b)<0;  //降序  >0升序
}
int main(){
    int a[10];
    int i;
    for(i=0;i<10;++i)
        cin>>a[i];
    qsort(a,10,sizeof(int),com);
    for(i=0;i<10;++i)
        cout<<a[i]<<" ";
    cout<<endl;
    return 0;
}

三.二维数组传参
有两种方式:
例如:对一个二维数组排序 int a[10][5];
1.声明:

  void sort(int a[][5]);//第二个括号内必须有列数

2.声明:

void sort(int (*a)[5]);//指针数组
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值