龙空技术网

小玉米学编程之入门级坐标排序

小玉米的安麻麻 172

前言:

此时各位老铁们对“cmp函数怎么写”可能比较讲究,各位老铁们都想要了解一些“cmp函数怎么写”的相关文章。那么小编在网上汇集了一些有关“cmp函数怎么写””的相关内容,希望你们能喜欢,兄弟们一起来了解一下吧!

来看坐标排序这道题。首先来看题目描述:输入N个不同的坐标,按X轴的值从小到大排序。如果X相同则按照Y。上节课提到了cmp函数,这一题就是重点考察的cmp函数的应用。

首先来看输入,第一行是一个N,接下来有m行就是每个下标,就是代表了每个点的下标。最后输出N行排序后的第n个的下标也就是最后一个下标。这儿是要把N的下标都输出来,也就是应该给它排序一下,最后从小到大依次排完序之后输出出来。

来写一下这道题。首先定义一个输入的整数n,输入一下。接下来需要输入的是N组下标值,这个地方可以用结构体来做,这个地方是存储每一个下标。因为每一个下标每一个点叫node,那就定义一个node。结构体里面要有一个X下标,还有一个y下标。

此时要定一个数组,这个地方是最多有这么多,给它复制过来以防溢出,可以都给大家多开一点,比如开多开个5多开个10都是可以的。这里现在已经定义好了数组,接下来就开始输入。请注意这里的输入方式是一个X一个y,而不是先把X输完再输y,所以应该是先say in x,那就是all.x。

这里注意一下结构体的使用方式,然后再输入ally,这样就把输入部分都做好了。此时要进行排序,用的是使用cmp函数来对下标,数组排序。现在还是老样子,先把它的雏形得写出来,直接按照上次题目怎么写的现在就怎么写。上次题目也是从一开始,这会儿,需要一个cmp函数来辅助。此时cmp没有定义,可以来定义一个cmp函数。请注意这里的cmp函数一定要再定义在node的下面,因为cmp函数里的参数是node类型的,所以一定要定义在下面才能运用这个结构体,这就叫排序函数。

·首先bool,刚才说了它的参数是node,刚才说node是node一个类型,就做它a和b。请注意,这儿a也出现了两次,所以可以改成a1和b1。

·接下来要比较a,因为来看题目,X轴从小到大,就是要判断如果a1和a2怎么样,它们俩的x不同才能对它进行小到大的排序,就是a1.x,a1.x不等于a2。

·然后返回什么?是不是a1.x<a2.x,因为要从小到大排序,否则就说明它们的X相同,所以按照Y排序,Y也是从小到大排序,它跟上面一样,只不过这次要比较的是y小于a2.y。

·现在最后就来输出一下这个数字,从1到n每次要输出ai.x,先输出x,再来看一下这个格式,它需要有一个空格的,打一个空格,换行别忘了。

现在整个代码已经写完了,现在可以来运行一下,没有错误,现在可以提交试试看,是正确的。

对于这一题主要考察的是cmp的应用,cmp的应用要根据题目的条件去进行cmp的改写,cmp在sort里面也可以给sort带来不同的排序方式,cmp就是sort的排序方式,这里也用到了结构体。

当然这一题还有另一种方法,可以用两个数组,一个是X数组,还有一个是y数组,可以用两个数组来分别存X和y,这样最后的结果也是可以的。但是这里还是推荐用结构体的方式写的,更简洁更方便一点。

这个题目就讲到这里。

标签: #cmp函数怎么写