sort函数:表示对给定区间所有元素进行排序
sort函数可以替代使用的冒泡排序和选择排序所带来的执行效率不高的问题,因为它使用的排序方法是类似于快排的方法,时间复杂度为n*log2(n),执行效率更高
使用sort,需要用头文件
#include<algorithm>
常用形式:
sort(a,a+n) //默认是从小到大排序
sort(a,a+n,less<int>());//从小到大排序
sort(a,a+n,greater<int>());//从大到小排序
当然,也可以自己编写函数,不用系统自带函数:
bool cmp(int a,int b)
{
return a>b;//降序排列
//return a<b;//默认的升序排列
}
函数结构体:
struct即结构体,亦被直接称为“结构”。实际编程时,经常需要用相关的不同类型的数据来描述一个数据对象。例如,描述学生的综合信息时,需要使用学生的学号、姓名、性别、成绩以及家庭住址等不同类型的数据。但是,用相关的不同类型的数据来描述一个数据对象会使编程极为不便。因此,C语言提供了一种称为结构体(struct)的数据类型,以描述需要不同类型数据的数据对象。
定义方式:
struct [结构体名]
{
[成员1数据类型] [成员1名称];
[成员2数据类型] [成员2名称];
...
}
struct
{
[成员1数据类型] [成员1名称];
[成员2数据类型] [成员2名称];
...
}//结构体变量名标识符(类似int a;中的a是一个标识符);
struct [结构体名]
{
[成员1数据类型] [成员1名称];
[成员2数据类型] [成员2名称];
...
}//结构体变量名标识符(类似int a;中的a是一个标识符);
①是只定义了一个名字为[结构体名]的结构体类型,我们可以通过struct [结构体名] [标识符]
的形式在需要的地方定义一个这种数据类型的变量。
②是只定义了一个这种结构体类型的数据,如果我们用这种方式的话,我们就只能在这里定义这种数据类型的变量。
③则是①和②的结合体。
结构体数据赋值方法:
①:定义时赋值,就是在定义变量后,直接用={[成员1数据],[成员2数据],...};
这种赋值方法只适用于定义时,定义后这样赋值就会报错。
②:通过[结构体变量名标识符(类似int a;中的a是一个标识符)]. [成员n名称]=[成员n数据],这种方法也有一个缺陷,就是字符串无法直接赋值,需要使用strcpy之类的函数。最后就是当结构体中的成员也是结构体时,我们直接下去套娃即可。。。
使用typedef定义结构体:
typedef是将定义复杂的声明定义成简单的别名,便于记忆和再次定义变量时使用。在结构体中就是将定义的结构体类型用一个新的别名代替。
①:typedef struct
{
[成员1数据类型] [成员1名称];
[成员2数据类型] [成员2名称];
[...]
} [别名];
②:typedef struct [结构体名]
{
[成员1数据类型] [成员1名称];
[成员2数据类型] [成员2名称];
[...]
} [别名];
与结构体定义的②和③相似,区别是在最前面加了typedef,后面的 [结构体变量名标识符(类似int a;中的a是一个标识符)]换成了[别名],然后就是后面不能定义变量。
这个也很好理解:先看一段语句:typedef unsigned int uint32_t,这段语句中unsigned int就相当于typedef struct [结构体名],uint32_tt就相当于[别名]。