acm结构体与排序详解

来源:互联网 发布:编程人生 编辑:程序博客网 时间:2024/05/22 13:09

结构体是c语言里面最基本的东西,这里不再赘述。不懂得同学请看一下c语言课本。也可以参考一下下面的讲解:

http://blog.csdn.net/xiaoyali/article/details/4393486

其实,现在你只要能看懂这个代码,就已经足够了,结构体就是这么easy~~~

我来解释一下:定义了一个类名为note 的结构体,以及它的成员变量。并且声明了几个note类型的变量。

下面我们通过一个具体的小程序来辅助理解一下:

程序功能:给结构体变量赋值,并且输出指定的结构体变量。

代码如下:


运行结果:


结构体就说这么多,如果还有不懂的同学去问度娘吧~~        


                           

下面进入我们这次训练的重点部分:排序                         

      在不远的将来随着大家越来越厉害,裸的排序题目基本上是不会再见到了,但是纵观各种acm题目,绝大多数的

题目都还是对排序有着比较广泛的应用的。这时候的排序就化身于各种程序代码的一些小的部分。除此之外,各种排

序的思想亦可以用在其他的算法实现过程中,所以我们今天所讲的绝不单单是排序,更重要的还是领悟排序的思想,

在现阶段把基础打好!                                           

      排序的方法有:基数排序O(n)、冒泡排序、选择排序、插入排序、堆排序O(nlogn)、希尔排序(小于

O(n*n))、归并排序O(nlogn)、快速排序O(nlogn)这八大排序方法,各种方法的实现都各有不同但是思想各

有千秋,某些排序之间还存在着些许关系~~学完数据结构之后这些方法我们都是得掌握的= =,下面这篇博客将各类

型的排序方法讲解的非常详细:http://blog.csdn.net/hguisu/article/details/7776068

     作为一个竞赛的acmer,我们在竞赛中要掌握的东西却与这八大排序并无关系= =,我们要学会的仅限于sort函数

的使用以及如何编写排序函数。快速排序是我们的今后在比赛中使用的排序方法,它的实现炒鸡容易(主要是c++库

函数有= =),代码量少,从时间复杂度上相比于其他的排序算法是最优的。

头文件:

#include <algorithm>

using namespace std;

1、默认的sort函数是按升序排。

 sort(a+l,a+r);//表示排序a[]数组且从a[l]到a[r-1]升序排序。

当然,降序排序也非常简单~~

sort(a+l,a+r,greater<int>());//表示排序a[]数组且从a[l]到a[r-1]降序排序。

2、当然也可以自己写一个cmp函数,按特定意图进行排序。

例如:

int cmp(  int a, int b ){return a > b ; }sort(a,a+n,cmp);
是对数组a降序排序

也可以对结构体进行排序。(见代码示例)

另外,对于自定义排序我们也可以在结构体中重载小于号,现阶段我们还没有深入了解c++,在课件里就不讲了。

下面给出代码示例:


运行结果:



3.

如果我们要按照字符串排序怎么办呢?


运行结果:

以上就是讲解排序的所有内容。


0 0