list排序

Python实现基本排序

爱⌒轻易说出口 提交于 2019-12-23 01:49:39
排序是比较常用的算法,其实有很多种实现,比如冒泡排序,选择排序,归并排序,希尔排序,快速排序等,今天介绍使用python语言实现这几种排序算法。 冒泡排序 冒泡排序是最常见到的排序算法,也是大学学习时遇到的第一种排序算法,它的实现思想是:相邻的两个元素进行比较,然后把较大的元素放到后面(正向排序),在一轮比较完后最大的元素就放在了最后一个位置,因为这一点像鱼儿在水中吐的气泡在上升的过程中不断变大,所以得名冒泡排序。在该排序算法中,要遍历n-1轮,每一轮都要比较数组中的元素,所以时间复杂度是O(n2)。 在比较的过程中相同的元素并不会发生交换,所以冒泡排序是一种稳定的排序算法。 接下来看一个冒泡排序的图片 ![在这里插入图片描述](https://img-blog.csdnimg.cn/2019122215314471.gif 具体代码实现 def bubble_sort ( alist ) : length = len ( alist ) for i in range ( length - 1 ) : # i表示比较多少轮 for j in range ( length - i - 1 ) : # j表示每轮比较的元素的范围,因为每比较一轮就会排序好一个元素的位置, # 所以在下一轮比较的时候就少比较了一个元素,所以要减去i if alist [ j ] > alist [ j +

Android Spinner排序 ListView显示数据

主宰稳场 提交于 2019-12-23 00:52:11
现在有这么一组Bean对象需要使用ListView展示 class Bean { int id ; int a ; int b ; public Bean ( int id , int a , int b ) { this . a = a ; this . b = b ; this . id = id ; } public int getA ( ) { return a ; } public void setA ( int a ) { this . a = a ; } public int getB ( ) { return b ; } public void setB ( int b ) { this . b = b ; } public int getId ( ) { return id ; } public void setId ( int id ) { this . id = id ; } } 首先做出页面 一个spinner 用来选择以什么排序 一排字段头 还有listView显示数据 <?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns: android = " http://schemas.android.com/apk/res/android " android: layout_width = "

python 学生管理系统(文件版)

独自空忆成欢 提交于 2019-12-22 05:29:43
学生管理系统(文件版) 1). 必须使用自定义函数,完成对程序的模块化 2). 学生信息至少包含:姓名、年龄、学号,除此以外可以适当添加 3). 必须完成的功能:添加、删除、修改、查询、退出 import re # 导入正则表达式模块 import os # 导入操作系统模块 filename = "students.txt" # 定义保存学生信息的文件名 def menu ( ) : # 输出菜单 print ( '' ' 学生信息管理系统 =============== 功能菜单 =============== │ 1 录入学生信息 │ │ 2 查找学生信息 │ │ 3 删除学生信息 │ │ 4 修改学生信息 │ │ 5 排序 │ │ 6 统计学生总人数 │ │ 7 显示所有学生信息 │ │ 0 退出系统 ' '' ) def main ( ) : ctrl = True # 标记是否退出系统 while ( ctrl ) : menu ( ) # 显示菜单 option = input ( "请选择:" ) # 选择菜单项 option_str = re.sub ( "\D" , "" , option ) # 提取数字 if option_str in [ '0' , '1' , '2' , '3' , '4' , '5' , '6' , '7' ] : option

C++ STL总结

谁说我不能喝 提交于 2019-12-22 05:14:13
STL概述 STL (Standard Template Library, 标准模板库) 是惠普实验室开发的一系列软件的统称。主要核心分为三大部分:容器(container)、算法(algorithm)和迭代器(iterator),另外还有容器适配器(container adaptor)和函数对象(functor)等其它标准组件。 容器: 顺序容器: 名称 特性 vector 模拟的数据结构式动态数组,在内存中是连续储存的,支持随机存取,支持在 尾部 快速插入和删除元素,搜索速度较慢 deque 称为双端队列,在内存中的储存方式是小片连续,每片之间用链表连接起来,支持随机存取,支持在 头部和尾部 快速插入和删除元素,搜索速度较慢 list 称为双向链表,在内存中的储存是不连续的,每个元素的内存之间用指针相连, 不支持 随机存取(因为要从首或尾遍历至指定位置),但是支持在 任意位置 快速插入和删除元素,搜索速度 最慢 ,扩展内存时无需复制和拷贝原元素 array 称为静态数组,在内存中是连续储存的,支持随机存取,不支持插入或删除元素 forward_list 称为前向链表,在内存中的储存是不连续的,同list一样支持在任意位置快速插入和删除元素,不支持随机存取,搜索速度也较慢,与list最大的区别在于其只能从头部遍历至尾部,不能反向遍历,因此没有保存后向指针,比list更省内存

不断的向数组的中间插入数据,ArrayList和LinkedList哪个快

旧时模样 提交于 2019-12-22 03:26:03
java中的ArrayList 、List、LinkedList、Collection关系详解 一、基础介绍(Set、List、Map) Set(集):集合中的元素不按特定方式排序,并且没有重复对象。他的有些实现类能对集合中的对象按特定方式排序。 List(列表):集合中的元素按索引位置排序,可以有重复对象,允许按照对象在集合中的索引位置检索对象。 Map(映射):集合中的每一个元素包含一对键对象和值对象,集合中没有重复的键对象,值对象可以重复。他的有些实现类能对集合中的键对象进行排序。 二、基本接口和类型 1、Iterator接口 该接口允许遍历集合中的所有元素,一共有三个方法: public boolean hasNext():判断是否还有下一个元素。 public Object next():取得下一个元素,注意返回值为 Object,可能需要类型转换。如果不再有可取元素,则抛出NoSuchElementException异常。在使用该方法之前,必须先使用hasNext()方法判断。 public void remove():删除当前元素,很少用。 2、Collection接口 该接口是Set和List的父接口,主要提供了下面的方法: public boolean add(Object?o):往集合中添加新元素。添加成功,返回true,否则返回false。 public

Java 面试前的基础准备 - 01

独自空忆成欢 提交于 2019-12-22 03:17:34
使用这个在线网页编辑真的是不习惯,还是 windows live writer 好。 下面列一个清单用于最近的面试:( 清单是网上down的 ) static,final,transient 等关键字的作用 foreach 实现原理 synchronized 和 volatile关键字 List,Map,Set 及其各种实现类,底层实现原理,实现类的优缺点 设计模式(单例【懒汉,饿汉,静态代码块,线程安全不安全】,工厂,观察,包装) 多线程(Runable 和 Thread) 什么是线程池, 以及线程池的优点 sleep() 和 wait() 的区别 IO(字节,字符,序列,内存,对象,打印。。。) 反射机制和内省机制 解析 xml文件几种方式的原理与特点 [ Dom, SAX, PULL ] sql 和 nosql(mysql 和 redis) 数据结构和算法(栈,队列,链表,树,图,排序,搜索) JDK 源码 JVM(GC 算法,垃圾回收器,类加载器,双委派类型,Java 内存模型,happens-before 原则) web 分布式 session 实现的方式(4种) SOA,RPC,dubbo 再添加几个快烂掉的点:override 和 overload,final 和 finally, static 关键字的作用: 作用在类上(该类 必须只能 是内部类,访问内部类的成员时

python3 sort()与sorted()的区别

余生长醉 提交于 2019-12-21 23:52:20
1, sort()只用于list,sorted()可以对所有的迭代对象进行排序 2, sort()原地排序返回None, sorted()返回一个新的list 3, 调用方式: listname.sort(reverse=False) sorted(iterable,key=None,reverse=False) iterable---可迭代对象 key---用来进行比较的元素,只有一个参数,具体的函数参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序 4, sorted()可用于dict的排序: dict1 = {"a":12,"5":98,"e":80} print(sorted(dict1.items(),key=lambda x:x[1])) 来源: CSDN 作者: 奈之若何℡ 链接: https://blog.csdn.net/qq_42036970/article/details/103647977

JAVA stream groupingBy 分组、排序

泄露秘密 提交于 2019-12-21 04:37:05
JAVA stream groupingBy 分组、排序 对groupingBy结果key排序 groupingBy得到的结果一般为Map<String, List>形式,之前碰到有人问对得到的Map<String, List>需要对key自然排序 对groupingBy结果key排序 @Data @AllArgsConstructor public class Product { private String name ; private int count ; } public static void main ( String [ ] args ) { Product product = new Product ( "h" , 2 ) ; Product product1 = new Product ( "a" , 4 ) ; Product product2 = new Product ( "a" , 2 ) ; Product product3 = new Product ( "c" , 4 ) ; Product product4 = new Product ( "u" , 5 ) ; Product product5 = new Product ( "u" , 2 ) ; List < Product > list = asList ( product ,

十大经典排序算法

青春壹個敷衍的年華 提交于 2019-12-21 02:53:29
转自https://blog.csdn.net/hellozhxy/article/details/79911867 0、排序算法说明0.1 排序的定义 对一序列对象根据某个关键字进行排序。 0.2 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行; 时间复杂度: 一个算法执行所耗费的时间。 空间复杂度:运行完一个程序所需内存的大小。 例子 数据量低时,O(1) 和 O(n^2)的区别可以忽略不计。比如,你有个算法要处理2000条元素。 O(1) 算法会消耗 1 次运算 O(log(n)) 算法会消耗 7 次运算 O(n) 算法会消耗 2000 次运算 O(n*log(n)) 算法会消耗 14,000 次运算 O(n^2) 算法会消耗 4,000,000 次运算 O(1) 和 O(n^2) 的区别似乎很大(4百万),但你最多损失 2 毫秒,只是一眨眼的功夫。确实,当今处理器每秒可处理上亿次的运算。这就是为什么性能和优化在很多IT项目中不是问题。 我说过,面临海量数据的时候,了解这个概念依然很重要。如果这一次算法需要处理 1,000,000 条元素

学习Spring-Data-Jpa(六)---spring-data-commons中的repository

…衆ロ難τιáo~ 提交于 2019-12-21 00:26:07
1、spring-data-commons项目   spring-data-commons项目是所有spring-data项目的核心,我们来看一下该项目下的repository包中的接口和注解。      2、Repository<T,ID>接口和@RepositoryDefinition注解   当中最重要的就是Repository接口了。它是做数据库操作的最底层的抽象接口、最顶级的父类,打开Repository接口看其源码,发现里面其实什么方法都没有,仅仅起到一个标识作用。捕获要管理的域类型和域类的id类型。用途是保存类型信息,并能够在类路径扫描期间发现继承该接口的接口,帮助我们创建代理类。 @Indexed public interface Repository<T, ID> { }   @Indexed 我们发现在Repository接口上有一个@Indexed 注解,是Spring5提供的注解,用于提升应用启动性能。这个注解单独存在不起作用,要想使其生效的话,要添加spring-context-indexer依赖。在编译时会将@CompoentScan扫描指定package中要生成的bean写在METE-INF/spring.components文件中,当项目启动时,就会读取这个文件,不会再扫描指定的package了,从而提升性能。