算法笔记01--基础排序
发布日期:2021-05-08 15:59:51 浏览次数:21 分类:精选文章

本文共 936 字,大约阅读时间需要 3 分钟。

1.sort函数

sort函数用法:sort(起始地址,结束地址,排序规则),排序规则可以自定义。
基本用法:

int array[]={   1,6,2,3,19,23,17};	sort(array,array+6);	for(int i=0;i

2.自定义排序

当需要自定义排序规则时,需提前定义比较函数,现在假设创建一个学生的结构体,结构体变量有成绩与学号。现在将学生信息按照成绩从高到低排序,当成绩相同时,学号较小的优先,比较函数如下:

struct Student{   	int number;	int score;};Student arr[100];bool compare(Student x,Student y){   	if(x.score==y.score){   		return x.number
y.score; }}

排序如下:

int n;	cin>>n;	for(int i=0;i
>arr[i].number>>arr[i].score; } sort(arr,arr+n,compare); for(int i=0;i

自定义排序习题:

输入10个整数,彼此以空格分隔。重新排序后输出,要求:1.先输出其中的奇数,并按从大到小排列;2.然后输出其中的偶数,并按从小到大排列。
根据题意需要自定义排序规则,排序规则如下:

bool Compare(int x,int y){   	if(x%2==1&&y%2==1){   		return x>y;	}	else if(x%2==0&&y%2==0){   		return x

对于自定义排序规则可以这么理解,在Compare(int x,int y)中两个参数的顺序代表了原始数组中x,y的相对位置关系–x在y之前。然后通过Compare函数中比较后返回这种关系是否为true。

举例,如第一个判断,当x,y均为奇数时,原始序列为x在y之前。奇数排序要求是从大到小,当x>y时为真,原始序列成立,当x<y时为假,原始序列不成立,x与y交换位置。
再例如第三个判断,当x为奇数,y为偶数时,原始序列x在y之前,排序成立,返回true。

上一篇:算法笔记02--排序算法
下一篇:电脑问题

发表评论

最新留言

关注你微信了!
[***.104.42.241]2025年04月08日 20时38分48秒