sort

c++ sort的用法

纵饮孤独 提交于 2020-02-29 16:37:54
C++ sort函数用法 FROM:http://hi.baidu.com/blackdemonfish/blog/item/e2c1d655d702a45ed0090652%2Ehtml 最近算法作业经常需要排序。偶是一个很懒的人,于是一直用C++的sort进行排序~~~不少同志对此心存疑虑,所以今天就写一写sort的用法。 声明:此用法是从某大牛的程序中看到的,其实偶只是拿来用,不知所以然,飘走~~~~~ MSDN中的定义: template<class RanIt> void sort (RanIt first, RanIt last); //--> 1) template<class RanIt, class Pred> void sort (RanIt first, RanIt last, Pred pr); //--> 2) 头文件: #include <algorithm> using namespace std; 1.默认的sort函数是按升序排。对应于1) sort(a,a+n); //两个参数分别为待排序数组的首地址和尾地址 2.可以自己写一个cmp函数,按特定意图进行排序。对应于2) 例如: int cmp( const int &a, const int &b ){ if( a > b ) return 1; else return 0; } sort(a

shell特殊符号、cut/sort/wc/uniq/tee/tr/split命令

二次信任 提交于 2020-02-29 02:17:53
特殊符号 * 代表零个或多个任意字符 ? 代表一个任意字符 #注释符号,后面的内容会被忽略 \脱义字符会把后面的特殊符号还原为普通字符 | 管道符 用作将前面的命令输出作为后面命令的输入 命令cut用来截取某一个字段 格式:cut -d '分隔字符' [-cf] n 。这里n是数字 -d后面跟分隔字符,分隔字符用单引号括起来 -f 后面接的是第几个区段 -c 后面接的是第几个字符,可以是一个数字,也可以是一个区间,还可以是多个数字。 命令 sort 用作排序 格式:sort [-t 分隔符] [-kn1,n2] [-nru] ,n1和n2是数字。 sort不加任何选项,就会从首字符向后一些按ASCII码值进行比较,最后将它们按升序排序 -t 后面跟分隔字符,作用跟cut的-d选项一样,-k后面可以跟单个数字表示对第几个区域的字符串排序 -n 使用纯数字排序 -r反向排序 -u 表示去重复 -kn1,n2 表示有n1区间排序到n2区间 wc 命令用于统计文档的行数,字符数或词数 不加任何选项直接跟文档 ,会把行数、词数、字符数依次输出。 -l 统计行数 -m 统计字符数 -w 统计词数 uniq删除重复行 -c 统计重复行出现的行数 从上面的图片中可以看到还有相同的行,所以在使用uniq命令前,要先排序 tee命令后面跟文件名,作用类似于重定向>,但它比重定向多一个功能

qsort库函数,刷题利器

时光总嘲笑我的痴心妄想 提交于 2020-02-28 22:16:04
之前刷过一些leetcode算法题,挺痛苦的,毕竟用的C语言。其中很大一部分题都是考察数组和字符串。 刷题中得到一个经验,遇见数组先考虑排序,排序就选qsort。那现在就总结写qsort的几个不同情况。 先看下qsort的函数原型,要记住qsort的四个参数,还有compare函数的两个参数。 /*参数 base-- 指向要排序的数组的第一个元素的指针。 nitems-- 由 base 指向的数组中元素的个数。 size-- 数组中每个元素的大小,以字节为单位。 compar-- 用来比较两个元素的函数,即函数指针(回调函数) */ void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*)) /* 注意compar函数两个形参必须是const void *型 在compar函数内部会将const void *型转换成实际类型。 */ int compar(const void *p1, const void *p2); /* 如果compar返回值小于0(< 0),那么p1所指向元素会被排在p2所指向元素的左面;   如果compar返回值等于0(= 0),那么p1所指向元素与p2所指向元素的顺序不确定;   如果compar返回值大于0(> 0)

python之自定义排序函数sorted()

邮差的信 提交于 2020-02-28 21:31:45
sort方法:   1,sort()是对一个容器(列表)进行排序,无返回值,直接改变容器。   2,sort()能够运用key参数传入一个自定义的函数或者匿名函数(函数只能有一个参数)先对比较的元素进行某种操作,然后根据这个函数的返回值进行排序。   3,key的参数的函数只能是具有一个参数的函数。 内置sorted()函数:   1,sorted()可以对所有的可迭代对象进行排序,有返回值,返回一个按某种规则排序之后的列表。这个规则可以由自己定义。   2,解决了sort()方法第三点指出的不足,可以使用具有两个参数的自定义函数。    sort()方法的定义: def sort(self, key=None, reverse=False): # real signature unknown; restored from __doc__ """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """ pass ''' key:用于为每个元素都生成一个比较大小的键,是排序的条件,  可以是:key=int(使用int()函数将元素转换成一个整数进行比较),  key=len(使用len()函数计算每个元素的长度进行比较),   key=lambda..(使用一个自定义的匿名函数对元素进行某种操作

JavaScript sort()

家住魔仙堡 提交于 2020-02-28 15:18:16
JavaScript sort() 方法 定义和用法 sort() 方法用于对数组的元素进行排序。 语法 arrayObject .sort( sortby ) 参数 描述 sortby 可选。规定排序顺序。必须是函数。 返回值 对数组的引用。请注意,数组在原数组上进行排序,不生成副本。 说明 如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。 如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下: 若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。 若 a 等于 b,则返回 0。 若 a 大于 b,则返回一个大于 0 的值。 实例 例子 1 在本例中,我们将创建一个数组,并按字母顺序进行排序: <script type="text/javascript"> var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] =

排序--选择排序Selection Sort Java实现

痴心易碎 提交于 2020-02-28 14:21:56
基本原理 选择排序的简单原理:选择排序算法通过从未排序部分重复查找最小元素(考虑升序)并将其放在开头来对数组进行排序。 将数组两个子数组: 已排序子数组 未排序子数组 选择排序中每次循环都会从未排序子数组中选取最小元素放入已排序子数组 小例子 排序数组:[2,3,6,2,7,5,1,4] 第一次循环: 将[2,3,6,2,7,5,1,4]中最小元素,放到开头 结果:[ 1 ,3,6,2,7,5,2,4] 第二次循环: 将[3,6,2,7,5,2,4]中最小元素,放到开头 结果:[1, 2 ,6,3,7,5,2,4] 第三次循环: 将[6,3,7,5,2,4]中的最小元素,放到开头 结果:[1,2, 2 ,3,7,5,6,4] 第四次循环: 将[3,7,5,6,4]中的最小元素,放到开头 结果:[1,2,2, 3 ,7,5,6,4] 第五次循环: 将[7,5,6,4]中的最小元素,放到开头 结果:[1,2,2,3, 4 ,5,6,7] 第六次循环: 将[5,6,7]中的最小元素,放到开头 结果:[1,2,2,3,4, 5 ,6,7] ... 最后排序结果:[1,2,2,3,4,5,6,7] 有序子数组不断扩大,无序子数组不断缩小,最终整个数组都是有序数组 代码实现Java public static int[] Sort(int[] array){ //记录数组长度 int

75. Sort Colors

守給你的承諾、 提交于 2020-02-28 10:04:14
"""解题思路:1.荷兰分区问题,我们把数组分成四类:red, white, 未分类, blue。初始的时候都在未分类组里,只要白色指针小于蓝色指针,我们遍历数组2.当白色指针是是红色的时候nums[white]==0,我们交换红色指针,并且两个指针同时+13.当白色指针是白色的时候,位置在正确位置,指针+14.当白色指针是蓝色的其他情况,则交换蓝色指针,并且,蓝色指针-1“”“class Solution(object): def sortColors(self, nums): """ :type nums: List[int] :rtype: None Do not return anything, modify nums in-place instead. """ red = 0 white = 0 blue = len(nums) - 1 while white <= blue: if nums[white] == 0: nums[red], nums[white] = nums[white], nums[red] red += 1 white += 1 elif nums[white] == 1: white += 1 else: nums[blue], nums[white] = nums[white], nums[blue] blue -= 1 2

趣味编程:函数式链表的快速排序

这一生的挚爱 提交于 2020-02-28 07:04:07
前一段时间有朋友问我,以下这段Haskell快速排序的代码,是否可以转化成C#中等价的Lambda表达式实现: qsort [] = [] qsort (x:xs) = qsort (filter (< x) xs) ++ [x] ++ qsort (filter (>= x) xs) 我当时回答,C#中缺少一些基础的数据结构,因此不行。经过补充之后,就没有任何问题了。后来,我觉得这个问题挺有意思,难度适中,也挺考察“基础编程”能力的,于是就自己写了一个。如果您感兴趣的话,也不妨一试。 这段代码是经典的,常用的体现“函数式编程”省时省力的例子,用短短两行代码实现了一个快速排序的确了不起。您可能不了解Haskell,那么我在这里先解释一下。 首先,这里用到了函数式编程语言中最常用的一种数据结构:不可变的链表。这个数据结构事实上是一个单向链表,并且是“不可变”的。这种数据结构在F#中也有存在,它的结构用大致是这样的: 可见,这是一种递归的数据结构。如果我们把这种数据结构叫做是ImmutableList的话,那么每个ImmutableList对象就会包含一个元素的“值”,以及另一个ImmutableList对象(在上图中,每个框就是一个ImmutableList对象)。对于每个ImmutableList对象来说,这个“值”便是它的“头(Head)”

c++ 中的sort用法

℡╲_俬逩灬. 提交于 2020-02-27 19:52:46
别人写的,我拿来做做笔记 sort 函数的用法 做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。 拿我出的“AC的策略”这题来说,需要对数组t的第0到len-1的元素排序,就写sort(t,t+len); 对向量v排序也差不多,sort(v.begin(),v.end()); 排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类string。 如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数——比较函数。比较函数是一个自己定义的函数,返回值是bool型,它规定了什么样的关系才是“小于”。想把刚才的整数数组按降序排列,可以先定义一个比较函数cmp bool cmp(int a,int b) { return a>b; } 排序的时候就写sort(a,a

C/C++ sort函数的用法

…衆ロ難τιáo~ 提交于 2020-02-27 19:40:14
sort函数的用法(#include<algorithm>) 做ACM题的时候,排序是一种经常要用到的操作。如果每次都自己写个冒泡之类的O(n^2)排序,不但程序容易超时,而且浪费宝贵的比赛时间,还很有可能写错。STL里面有个sort函数,可以直接对数组排序,复杂度为n*log2(n)。使用这个函数,需要包含头文件。 这个函数可以传两个参数或三个参数。第一个参数是要排序的区间首地址,第二个参数是区间尾地址的下一地址。也就是说,排序的区间是[a,b)。简单来说,有一个数组int a[100],要对从a[0]到a[99]的元素进行排序,只要写sort(a,a+100)就行了,默认的排序方式是升序。 拿我出的“AC的策略”这题来说,需要对数组t的第0到len-1的元素排序,就写sort(t,t+len); 对向量v排序也差不多,sort(v.begin(),v.end()); 排序的数据类型不局限于整数,只要是定义了小于运算的类型都可以,比如字符串类string。 如果是没有定义小于运算的数据类型,或者想改变排序的顺序,就要用到第三参数——比较函数。比较函数是一个自己定义的函数,返回值是bool型,它规定了什么样的关系才是“小于”。想把刚才的整数数组按降序排列,可以先定义一个比较函数cmp bool cmp(int a,int b) { return a>b; } 排序的时候就写sort