list排序

直接插入排序的两种做法

匿名 (未验证) 提交于 2019-12-02 23:45:01
可能很多人不会留意到这个问题,今天恰好碰到了,然后来稍微讨论一下 直接插入排序应该是很多数据结构与算法书里第一个讲的排序算法,算法的描述是这样的: 把待排序列视作两段,一段是已排序列,一段是未排序列。每一趟排序时,为未排序列的首位在已排序列中进行查找(因为是直接插入排序,所以这里特指逐个比较)其合适的位置,然后将其插入(插入的过程中伴随着一系列元素的后移)。 当时没有想太多,直接写了个按文字描述的代码: def InsertSort1(LIST): for i in range(1,len(LIST)):#从1开始,将0元素视为已排序列 TEMP=LIST[i]#保存中间变量 for ii in range(0,i): if LIST[ii]>TEMP:#从前往后逐次比较,如果出现比它大的元素,那么就说明他应该落在此位。此处未加等于号是为了保证排序稳定性 for iii in range(i,ii,-1):#注意,从后往前位移元素 LIST[iii]=LIST[iii-1] LIST[ii]=TEMP break return LIST 后来在看的时候发现好像不太对劲,怎么嵌套了三层for,于是乎回忆起了这一段应该是从后往前进行比较的 def InsertSort2(LIST): for i in range(1,len(LIST)): TEMP=LIST[i] flag=True

Dart: List排序

匿名 (未验证) 提交于 2019-12-02 23:43:01
var list = <Item>[ Item(title: "item 1", isTopping: true), Item(title: "item 2"), Item(title: "item 3", isTopping: true), Item(title: "item 4"), ]; main(List<String> arguments) async { /// 通过排序把顶置的信息放在前面 list.sort((a, b) => b.top.compareTo(a.top)); for (var item in list) { print(item.title); // 1324 } } class Item { Item({ this.title = '', this.isTopping = false, }); String title; bool isTopping; int get top => isTopping ? 1 : 0; }

对List集合进行排序

匿名 (未验证) 提交于 2019-12-02 22:56:40
一、说明 使用 Collections工具类的sort方法对list进行排序 新建比较器Comparator 二、代码 排序: import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; public class Test { public static void main(String[] args) { List < Student > list = new ArrayList < Student > (); //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中 Student s1 = new Student(); s1.setAge(20); Student s2 = new Student(); s2.setAge(19); Student s3 = new Student(); s3.setAge(21); list.add(s1); list.add(s2); list.add(s3); System.out.println("排序前:"+list); Collections.sort(list, new Comparator < Student > (){ /* * int

[转].Python中sorted函数的用法

匿名 (未验证) 提交于 2019-12-02 22:56:40
原文地址为: [转].Python中sorted函数的用法 我们需要对List、Dict进行排序,Python提供了两个方法 对给定的List L进行排序, 方法1.用List的成员函数sort进行排序, 在本地进行排序,不返回副本 方法2.用built-in函数sorted进行排序(从2.4开始), 返回副本,原始输入不变 --------------------------------sorted--------------------------------------- >>> help(sorted) Help on built-in function sorted in module __builtin__: sorted(...) ---------------------------------sort---------------------------------------- >>> help(list.sort) Help on method_descriptor: sort(...) ----------------------------------------------------------------------------- iterable:是可迭代类型; cmp:用于比较的函数,比较什么由key决定; key

List之sort、sorted高级排序-Python3.7 And 算法&lt;七&gt;

匿名 (未验证) 提交于 2019-12-02 22:56:40
1、 sort ( * , key=None , reverse=False ) sort()接受两个参数,这两个参数只能通过关键字(关键字参数)传递。 参数key: 带一个参数 的函数(排序时, 会依次传入列表的每一项 ,作为该函数的参数)。该函数用于在 比较排序之前 进行的操作,e.g:每个字符串 比较之前 ,需要统一小写。默认值None,说明每次比较排序之前不对 比较项 进行任何操作。 >>> test=["A","a","E","W","o"] >>> test.sort() >>> test ['A', 'E', 'W', 'a', 'o'] >>>>>> test.sort(key=lambda x:x.lower())>>> test['A', 'a', 'E', 'o', 'W']>>>   key还可以是 比较函数functools.cmp_to_key(func), >>> from functools import cmp_to_key>>> test=[[7,0],[4,4],[7,1],[5,0],[6,1],[5,2]]>>> myKey=cmp_to_key(lambda x,y:y[0]-x[0] if x[0]!=y[0] else x[1]-y[1]) #x 代表后面的数 y代表前面的数>>> test.sort(key=myKey)>>>

[Python]CCF――数字排序(201503-2)

匿名 (未验证) 提交于 2019-12-02 22:51:30
问题描述    给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出。 输入格式 输入的第一行包含一个整数n,表示给定数字的个数。   第二行包含n个整数,相邻的整数之间用一个空格分隔,表示所给定的整数。 输出格式   输出多行,每行包含两个整数,分别表示一个给定的整数和它出现的次数。按出现次数递减的顺序输出。如果两个整数出现的次数一样多,则先输出值较小的,然后输出值较大的。 样例输入 12 5 2 3 3 1 3 4 2 5 2 3 5 样例输出 样例输出 3 4 2 3 5 3 1 1 4 1 评测用例规模与约定 1 ≤ n ≤ 1000,给出的数都是不超过1000的非负整数。 # 数字排序 n = int(input()) a = list(map(int,input().split())) s = {} for i in a: s[i] = a.count(i) sort_s = sorted(s.items(),key= lambda x:(-x[1],x[0])) for i in sort_s: print(i[0],i[1]) 利用列表来储存数据,并用字典来记录每个数字出现的次数 对字典进行排序:根据value降序然后再对key升序,即得到想要的顺序了。 来源:博客园 作者: SavvyM 链接:https://www.cnblogs.com

python中涉及到的对象排序

匿名 (未验证) 提交于 2019-12-02 22:51:30
一、列表(list)排序:   1 sort()函数     list对象有sort()内置排序方法。     list.sort(key=None, reverse=False)     key:用来指定list中元素以什么形式去参与排序,该参数可以接受一个函数,以函数的返回值进行排序。     reverse:默认false(升序),true为降序。     sort()方法改变的是对象自身,所以元组在排序时要先转换为列表。   2内置函数sorted():     result = sorted(iterable,key=None,reverse=False)     iterable:为可迭代对象,     key:用来指定可迭代对象中各元素以什么形式参与排序,key可以为一个函数,将会以函数的返回值对元素进行排序,     reverse:默认false(升序),true为降序,     result:sorted()函数不改变对象本身,它返回的是iterable按照key的排序方式排好之后的对象。 二、字典(dict)排序:   1内置函数sorted():     一下排序中sorted()函数默认reverse=False(降序),若要升序则reverse=True     字典没有实例排序方法sort()。     字典排序分为按key排序、按value排序。  

python的sorted()方法

匿名 (未验证) 提交于 2019-12-02 22:51:30
排序算法 排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个dict呢?直接比较数学上的大小是没有意义的,因此,比较的过程必须通过函数抽象出来。 Python内置的 sorted() 函数就可以对list进行排序: >>> sorted ([ 36 , 5 , - 12 , 9 , - 21 ]) [- 21 , - 12 , 5 , 9 , 36 ] 此外, sorted() 函数也是一个高阶函数,它还可以接收一个 key 函数来实现自定义的排序,例如按绝对值大小排序: >>> sorted ([ 36 , 5 , - 12 , 9 , - 21 ], key = abs ) [ 5 , 9 , - 12 , - 21 , 36 ] //按绝对值大小来排序的 我们再看一个字符串排序的例子: >>> sorted ([ 'bob' , 'about' , 'Zoo' , 'Credit' ]) [ 'Credit' , 'Zoo' , 'about' , 'bob' ] 默认情况下,对字符串排序,是按照ASCII的大小比较的,由于 'Z' < 'a' ,结果,大写字母 Z 会排在小写字母 a 的前面。 现在,我们提出排序应该忽略大小写,按照字母序排序。要实现这个算法

python3排序 sorted(key=lambda)

匿名 (未验证) 提交于 2019-12-02 22:51:30
使用python对列表(list)进行排序,说简单也简单,说复杂也复杂,我一开始学的时候也搞不懂在说什么,只能搜索一些英文文章看看讲解,现在积累了一些经验,写在这里跟大家分享,我们通过例子来详细解释一下函数sorted的具体用法: 先创建一个列表a 直接使用sorted方法,返回一个列表就是排序好的 假如a是一个由元组构成的列表,这时候就麻烦了,我们需要用到参数key,也就是关键词,看下面这句命令,lambda是一个隐函数,是固定写法,不要写成别的单词;x表示列表中的一个元素,在这里,表示一个元组,x只是临时起的一个名字,你可以使用任意的名字;x[0]表示元组里的第一个元素,当然第二个元素就是x[1];所以这句命令的意思就是按照列表中第一个元素排序 按照第二个元素排序: 我们还可以使用reverse参数实现倒序排列 python3 取消了cmp 参数,可以用 functools.cmp_to_key 代替 参考: https://www.zhihu.com/question/30389643?sort=created 使用python对列表(list)进行排序,说简单也简单,说复杂也复杂,我一开始学的时候也搞不懂在说什么,只能搜索一些英文文章看看讲解,现在积累了一些经验,写在这里跟大家分享,我们通过例子来详细解释一下函数sorted的具体用法: 先创建一个列表a

Python排序技巧详解

匿名 (未验证) 提交于 2019-12-02 22:11:45
python3.7 本文参考、翻译自Andrew Dalke and Raymond Hettinger的《Sorting HOW TO》(Release-0.1) 原文地址: https://docs.python.org/3/howto/sorting.html 就排序而言,Python中的list容器内置了sort()方法,可以原地排序。此外,也有内建方法sorted()可以用其他的iterable生成一个新的、排过序的list。 在此基础上,本文将介绍更灵活的、高级的排序技巧。 说道排序,最简单最直观的概念就是:从小到大依次排开。 考虑到结果的使用情况,Python里直接提供了两种方法:内建的sorted()与list的sort()方法。 区别在于: sorted()方法需要传入一个iterable而创建一个新的list。 list的sorted()方法可以不传入参数而直接使用,功能是对list本身进行排序而不产生新的list。 sorted()不光可以对list进行排序,只要是iterable都可以。 >>> list1=[ 6 , 3 , 5 , 1 , 2 ] >>> list2=[ 2 , 3 , 5 , 1 , 8 ] >>> list3=sorted(list1) >>> list2.sort() >>> list1 [ 6 , 3 , 5 , 1 , 2 ]