结构体快排回顾(sort)

一般来说,我做竞赛的时候排序一般用快排

很快很方便

普通sort(从小到大)

sort(a,a+n);

直接贴一段代码吧,包含了vector,sort,结构体等简单东西综合

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

typedef struct example
{
    int elem1;
    int elem2;
}example;

/*这个comparison函数很重要.如果希望升序排序,就是"<",降序排列就是">"号,这样便于直观记忆.如果希望用elem2作为比较标准
就把elem1改为elem2,这样结构体就以elem2为比较标准排序了.*/
bool comparison(example a,example b){
    return a.elem1<b.elem1;
}

int main()
{
    int N;
    fin>>N;

    vector<example> array(N);

    for(int i=0;i<N;i++)
    {
        fin>>array[i].elem1>>array[i].elem2;
    }

    sort(array.begin(),array.end(),comparison);

    for(int i=0;i<N;i++)
    {
        cout<<array[i].elem1<<" "<<array[i].elem2<<endl;
    }
        return 0;
}

  

再搞一段

#include <iostream>
#include <algorithm>
#include <time.h>
using namespace std;

typedef struct index
{
	int a,b;
}index;

bool cmp(index a , index b)
{
	if (a.a > b.a )
	{
		return true;
	}
	else
		if ( a.a == b.a  )
		{
			if (a.b > b.b )
			{
				return true ;
			}
		}
	return false ;
}

int main()
{
	index c[100];
	srand( time(0) );
	for (int i = 0 ; i < 100 ; ++i )
	{
		c[i].a = rand()%10 ;
		c[i].b = rand()%10 ;
	}

	sort( c , c+100 , cmp );

	for (i = 0 ; i < 100 ; ++i )
	{
		cout<<c[i].a <<"   "<<c[i].b <<endl;
	}
	return 0;
}

  

时间: 2024-10-18 17:10:39

结构体快排回顾(sort)的相关文章

cmp快排 结构体快排

由于深陷于JAVA的面向对象思想,常常会用到结构体,记一下这个模板,方便直接调用进行结构体排序: struct point { int val,turn; }; bool cmp(struct point p1, struct point p2) { return p1.val < p2.val; } 调用: point po[100005]; sort(po,po+n,cmp); 原文地址:https://www.cnblogs.com/zinyy/p/9139116.html

【NWERC2015】【BZOJ4425】 AssigningWorkstations分配工作站 贪心优先队列加结构体快排

Assigning Workstations Time Limit: 20000ms, Special Time Limit:50000ms, Memory Limit:65536KB Total submit users: 7, Accepted users: 4 Problem 13604 : No special judgement Problem description Penelope is part of the admin team of the newly built super

go语言的排序、结构体排序

原文:https://studygolang.com/articles/1598 晚上准备动手写点 go 的程序的时候,想起 go 如何排序的问题.排序 sort 是个基本的操作,当然搜索 search 也是.c 提供一个 qsort 和 bsearch,一个快排一个二分查找,不过是使用起来都不方便: c++ 中的 sort 貌似很不错,因为 c++ 支持泛型(或是说模板),所以很多东西使用起来很方便.go 是通过 sort 包提供排序和搜索,因为 go 暂时不支持泛型(将来也不好说支不支持),

【转】 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法: 1.sort入门: 使用sort需要包含algorithm头文件,完整代码如下 #include<iostream> #include<vector> #include<algorithm>//貌似可以不用,但最好加上. using namespace std

C++ 结构体多元素sort排序调用时的写法

//总结一下,结构体数据排序的快速写法 //以后在遇到需要写的时候,不要迟疑快速写完 struct node { int u, v, w; }a[10000]; //假设该结构体有3个元素 //现在仅实现结构体数组按照w的值从小到大的排序 //1.基于C++的重载写法,写在结构体的定义内 如下: struct node { int u, v, w; bool operator <(const node &x)const { return w<x.w; //升序排列 } }; //现在提

sort+结构体实现二级排序

之前介绍的sort函数由于其效率较高,使用较为简单让我用起来那叫一个爽,今天再写一篇使用sort+结构体实现二级排序的方法. 还是先想个问题吧,比如我想输入5个同学的名字和身高,然后得到他们身高的降序,但是如果出现相同身高的情况,名字的拼音靠前的排在前面. 好,现在这个问题已经涉及到了二级排序,要按照身高的降序和姓名的升序排列,那么就要先定义一个结构体,将姓名和身高都包含进去,然后用sort对结构体排序,而实现二级排序,关键在于自己写的cmp函数(sort的比较方法) 1 #include<io

转载 从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

转载自:http://www.cnblogs.com/cj695/p/3863142.html sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法: 1.sort入门: 使用sort需要包含algorithm头文件,完整代码如下 #include<iostream> #include<vector> #include<

HDU - 1789 Doing Homework again(贪心) ~~~学了一波sort对结构体排序

题目中因为天数和分数是对应的,所以我们使用一个结构体来存分数和截止如期. 一开始做这道题的时候,很自然的就想到对天数排序,然后天数一样的分数从大到小排序,最后WA了之后才发现没有做到"舍小取大"的贪心.所以改变一下策略,对分数排序,如果分数一样的话,时间从小到大排序(因为我们的目的就是先做分多的作业,所以分数一样的得放到前几天去做). (具体sort排结构体知识见代码里面,其实也可以写两次for来排序): 思路:排好序之后,从小到大遍历,每找到一个分数,去寻找对应的天数到第一天中有没有

从最简单的vector中sort用法到自定义比较函数comp后对结构体排序的sort算法

sort函数在使用中非常好用,也非常简单,而且效率与冒泡或者选择排序不是一个数量级.本文就sort函数在vector中的用法分为sort函数入门用法与自定义comp比较函数比较结构体这两个最基本的功能讲讲其用法: 1.sort入门: 使用sort需要包含algorithm头文件,完整代码如下 #include<iostream> #include<vector> #include<algorithm>//貌似可以不用,但最好加上. using namespace std