利用标准库中sort函数进行排序

//1、利用sort进行由小到大排序:

#include<stdio.h>
#include<algorithm>
using namespace std;
int main()
{
    int a[10],i;
     for (i=0;i<10;i++)
       scanf("%d",&a[i]);
       sort(a,a+10);
    for (i=0;i<10;i++)printf("%d ",a[i]);
    return 0;
}

//2、利用sort进行由大到小排序:

加上cmp函数即可,修改cmp函数(将‘>’改为‘<’)也可以进行由小到大排序,若没有cmp函数,默认是由小到大排序,如以上例子。

#include<stdio.h>
#include<algorithm>
using namespace std;
int cmp(int a,int b)
{
  if(a>b)
  return 1;
  else
  return 0;
}
int main()
{
    int a[10],i;
     for (i=0;i<10;i++)
       scanf("%d",&a[i]);
       sort(a,a+10,cmp);
    for (i=0;i<10;i++)printf("%d ",a[i]);
    return 0;
}

//3、利用sort对结构体一级排序:

如以下程序中,按照结构体中的x由小到大的顺序,对结构体排序。改变cmp函数中的比较符号,可以将排序改成按升序还是降序。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct In
{
  int x;
  int y;
}s[5];
bool cmp(In a ,In b)
{
   return a.x<b.x;
}
int main()
{
    int i;
    for (i=0;i<5;i++)
      scanf("%d%d",&s[i].x,&s[i].y);
        sort(s,s+5,cmp);
      for(i=0;i<5;i++) printf("%d %d\n",s[i].x,s[i].y);
      return 0;
}

//4、利用sort对结构体二级排序:

如以下程序中,先按照结构体中的x由小到大的顺序,对结构体排序,如果x相等,在比较y。改变cmp函数中的比较符号,可以将排序改成按升序还是降序。

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
struct In
{
  int x;
  int y;
}s[5];
int cmp(In a,In b)
{
    if(a.x!=b.x) return a.x<b.x;
    return a.y<b.y;
}
int main()
{
    int i;
    for (i=0;i<5;i++)
      scanf("%d%d",&s[i].x,&s[i].y);
        sort(s,s+5,cmp);
      for(i=0;i<5;i++) printf("%d %d\n",s[i].x,s[i].y);
  return 0;
}
时间: 2024-12-28 06:21:13

利用标准库中sort函数进行排序的相关文章

C++标准库中next_permutation和pre_permutation实现原理

标准库中next_permutation函数:找当前序列中元素排列的下一个排列,按照字典顺序进行排列.比如说数组排列"123",那么它的下一个排列为"132",并且返回true.如果当前序列没有下一个排列,我们返回false,且把当前排列置为最小的排列,比如说:排列"321",因为该排列已经是最大的排列,所以它没有下一个排列.我们把该排列置为"123",并且返回false. 标准库实现两个重载版本的next_permutati

STL笔记(6)标准库:标准库中的排序算法

STL笔记(6)标准库:标准库中的排序算法 标准库:标准库中的排序算法The Standard Librarian: Sorting in the Standard Library Matthew Austern http://www.cuj.com/experts/1908/austern.htm?topic=experts 用泛型算法进行排序    C++标准24章有一个小节叫“Sorting and related operations”.它包含了很多对已序区间进行的操作,和三个排序用泛型

swift标准库中常见的55个协议。

swift标准库中常见的55个协议. 从协议名结尾字面上我们可以将Protocol分为able.Type.Convertible 三类 从功能角度上来讲的话可以总结为: 功能添加型(able结尾) "可以做什么?" 举例: Hashable: 给你的实例添加一个生成哈希值的功能. Equatable: 给你的实例添加一个判断相等的功能. 2.类型对比型(Type结尾) "这个实例是什么?" 举例: CollectionType: swift中所有的集合类型都要遵守的

c/c++标准库中的文件操作总结

1 stdio.h是c标准库中的标准输入输出库 2 在c++中调用的方法 直接调用即可,但是最好在函数名前面加上::,以示区分类的内部函数和c标准库函数. 3 c标准输入输出库的使用 3.1 核心结构体 FILE结构体 打开一个文件的时候获取它,然后就可以不用管它了. 3.2 核心方法 3.2.1 fopen 第一个字符串是文件的路径. 第二个参数是一个字符串,表示操作该文件的模式,"rb"表示read binary,即以二进制的形式来读该文件. 3.2.2 fseek 第一个参数是F

参考C++STL标准库中对了的使用方法

http://www.cppblog.com/zhenglinbo/archive/2012/09/18/191170.html 参考:http://www.cppblog.com/zhenglinbo/archive/2012/09/18/191170.html 当然是使用c++中的STL 的queue啦.下面简要介绍一下使用方法. 1 准备工作 头文件 #include<queue> 2 声明和定义的方法.STL的队列是泛型模板,支持任何内置和构造类型. 比如对于刚才那个牛奶问题.我把状态

利用标准库算法求解排列组合

以前求序列的排列时,最常用的方法就是递归回溯,现在发现其实像这样有特定算法的重复性工作是可以在STL标准库中找到答案的. 在STL的变序性算法中,有两个用于排列元素的算法分别如下: bool next_permutation(Iterator beg,Iterator end) bool prev_permutation(Iterator beg,Iterator end) 这两个算法的功能也很简单,next_permutation()会改变区间(beg,end)内的元素次序,使它们符合"下一个

C#调用非托管动态库中的函数方法

C#如何调用一个非托管动态库中的函数呢,比如用VC6写的动态库,总之C#调用动态库的过程是比Java调用DLL动态库方便快捷多了,下面举例说明这个过程. 1.创建一个非托管动态库 代码如下: 代码如下: //这一句是声明动态库输出一个可供外不调用的函数原型. extern   "C"  __declspec(dllexport)  int  add( int ,  int ); int  add( int  a, int  b) { //实现这个函数returna+b; } 除声明外,

C++中 sort 函数的使用详解

STL主要包含容器,迭代器,算法三块内容,用户可以对容器进行一系列的操作,比如遍历和计算,而STL提供的迭代器和容器完美地提供了这样的接口.其中std::vector是最常用的容器之一,vector是一个模板类,定义在命名空间namespace下,使用vector需要在包含相关头文件.今天主要讲解对vector的排序的使用. 常见的排序算法有快速排序.冒泡排序.归并排序等.STL中sort函数的实现跟STL的版本有关,而往往sort函数是由多种排序算法混合而成的. 1. vector元素为内置数

Python标准库 内置函数print objects sep &#39; &#39; end &#39;\n&#39; file sys st

本函数是实现对象以字符串表示的方式格式化输出到流文件对象file里.其中所有非关键字参数都按str()方式进行转换为字符串输出,关键字参数sep是实现分隔符,比如多个参数输出时想要输出中间的分隔字符:关键字参数end是输出结束时的字符,默认是换行符\n:关键字参数file是定义流输出的文件,可以是标准的系统输出sys.stdout,也可以重定义为别的文件:参数flush是立即把内容输出到流文件,不作缓存. 例子: #print() print(1, 2, 3, sep = ',', end =