list排序

排序算法之冒泡、插入、快排和选择排序

怎甘沉沦 提交于 2019-12-02 11:14:22
排序算法大全 package cn.baidu; import java.util.Arrays; public class SortTest { public static void main(String[] args) { int[] arr = { 2, 5, 3, 1, 4 }; System.out.println("排序前:" + Arrays.toString(arr)); // InsertSort.sort(arr); // BubbleSort.sort(arr); // SelectionSort.sort(arr); // ShellSort.sort(arr); // QuickSort.sort(arr); // MergeSort.sort(arr); // HeapSort.sort(arr); System.out.println("排序后:" + Arrays.toString(arr)); } /* * 交换数组中的两个元素 */ public static void swap(int[] data, int i, int j) { int temp = data[i]; data[i] = data[j]; data[j] = temp; } } /** * 冒泡排序(稳定) * @param array 冒泡排序(Bubble Sort

java中List集合排序

一世执手 提交于 2019-12-02 11:11:07
1、数据简单的: List < Integer > list = new ArrayList < Integer > ( ) ;   list . add ( new Integer ( 5 ) ) ;   list . add ( new Integer ( 13 ) ) ;   list . add ( new Integer ( 4 ) ) ;   list . add ( new Integer ( 9 ) ) ;   Collections . sort ( list ) ; //默认升序排列   System . out . println ( list . toString ( ) ) ; 2、对象存储: List < User > list = new ArrayList < User > ( ) ;   list . add ( new User ( "张三" , 5 ) ) ;   list . add ( new User ( "李四" , 30 ) ) ;   list . add ( new User ( "王五" , 19 ) ) ;   list . add ( new User ( "陈十七" , 17 ) ) ;   Collections . sort ( list ) ; // 按年龄排序   System . out . println (

【C#】对象排序

江枫思渺然 提交于 2019-12-02 11:01:36
排序方式 使用List.Sort(),并实现IComparable接口 使用List.Sort(委托) 排序步骤 排序时返回的 int 值,提取两个对象的信息 相减进行比x大值的在前面,就是升序 例子: public class TestObject { public int n; public bool b; public override string ToString() { return string.Format("[{0},{1}]\t", n, b); ; } } static void Main(string[] args) { List<TestObject> testObjects = new List<TestObject>{ new TestObject() { n = 1, b=true }, new TestObject() { n = 5, b=true }, new TestObject() { n = 3,b=false }, new TestObject() { n = 7,b=true }, new TestObject() { n = 2, b=false}, }; Console.WriteLine("默认"); Output(testObjects); Console.WriteLine(); Console.WriteLine("升序"

python--sort()和sorted()高级排序

独自空忆成欢 提交于 2019-12-02 10:39:12
python--sort()和sorted()高级排序 转载: https://www.cnblogs.com/dyl01/p/8563550.html 1、list中的sort()方法:  ''' ## 一个list调用sort方法后,对原list进行排序 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,key=len, key=lambda.. reverse:表示是否反序,默认从小到大,默认为Flase ''' ##一个list调用sort方法后,对原list进行排序 ## 1、最简单的排序 ## 1、最简单的排序 l = [5,2,3,1,4 ] l .sort() print(l) ##输出:[1, 2, 3, 4, 5] l.sort(reverse=True)#反序 print(l) ##输出:[5, 4, 3, 2, 1] ##2、字符串排序 StrList = ['fb', 'bx', 'csw', 'qb', 'qqa',

go学习笔记

烂漫一生 提交于 2019-12-02 08:08:39
转自 https://www.cnblogs.com/xhen/p/11106776.html go学习笔记 0、值类型:变量直接存储值,内存通常在栈中分配:int、float、bool、string以及数组和struct   引用类型:变量存储的是一个地址,这个地址存储最终的值。内存通常在堆上分配。通过gc回收:指针、slice、map、chan等都是引用类型 使用&结构体{}就相当与使用new实例化了一次结构体 1、变量(或常量)包含数据,这些数据可以有不同的数据类型,简称类型。使用 var 声明的变量的值会自动初始化为该类型的零值。类型定义了某个变量的值的集合与可对其进行操作的集合。  类型可以是基本类型,如:int、float、bool、string;结构化的(复合的),如:struct、array、slice、map、channel;只描述类型的行为的,如:interface。  结构化的类型没有真正的值,它使用 nil 作为默认值(在 Objective-C 中是 nil,在 Java 中是 null,在 C 和 C++ 中是NULL或 0)。值得注意的是,Go 语言中不存在类型继承。  比如:定义变量的两种方式 var i int=15 或 i :=15     定义数组:arr1 :=[] int { } 数组名称 数组长度 数组里面的类型 数组值 2

C++面试中的排序算法总结

梦想与她 提交于 2019-12-02 06:48:56
查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。 面试官对于这些排序可能会要求比较各自的优劣、各种算法的思想及其使用场景。还有要会分析算法的时间和空间复杂度。通常查找和排序算法的考察是面试的开始,如果这些问题回答不好,估计面试官都没有继续面试下去的兴趣都没了。所以想开个好头就要把常见的排序算法思想及其特点要熟练掌握,有必要时要熟练写出代码。 接下来我们就分析一下常见的排序算法及其使用场景。限于篇幅,某些算法的详细演示和图示请自行寻找详细的参考。 冒泡排序 冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。举个栗子,对5,3,8,6,4这个无序序列进行冒泡排序。首先从后向前冒泡,4和6比较,把4交换到前面,序列变成5,3,8,4,6。同理4和8交换,变成5,3,4,8,6,3和4无需交换。5和3交换,变成3,5,4,8,6,3.这样一次冒泡就完了,把最小的数3排到最前面了

Java编程基础——Comparable和Comparator接口

半世苍凉 提交于 2019-12-02 05:24:55
Comparable和Comparator都是用来实现集合元素的比较或排序的。两者的区别在于实现方法的不同: 对于排序的依据元素分为两种情况: (1)对于单元素的类:int、float、double、char、String等数据类型,排序依据就是它对应的这个单元素。 (2)对于多元素的类:例如定义一个Student类,它的属性有int类型的age和String类型的name等,这时就需要指定一个排序依据元素。 Comparable是在集合内部定义的方法实现的排序;Comparator是在集合外部实现的排序 想要实现实现排序,就需要在集合内实现Comparable接口的方法,或者在集合外定义Comparator接口的方法。 (一) Comparator位于java.util下,Comparable位于java.lang下 Comparable是一个对象本身就已经支持自比较所实现的借口(比如String、Integer自己就可以完成比较大小的操作)自定义的类要在加入list容器后能够进行排序,可以实现Comparable接口,在用Collection类的sort方法进行排序时,如果不指定Comparator,就会按照自然顺序(实现Comparable接口设定的排序方式)进行排序 Comparator是一个转用的比较器,当这个对象不支持自比较或者自比较函数不能满足要求时

选择排序算法

自闭症网瘾萝莉.ら 提交于 2019-12-02 03:19:43
原理: 选择排序的原理很简单,就是从需要排序的数据中 选择 最小的(从小到大排序),然后放在第一个,选择第二小的放在第二个…… 算法步骤 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。 重复第二步,直到所有元素均排序完毕。 #简单代码实现 def sort_list(mylist): for i in range(len(mylist)): #假设的最小值的索引 min_index=i for j in range(i,len(mylist)): #判断大小 最小值索引变化 if mylist[j]<mylist[min_index]: min_index=j #变换两个数位置 mylist[i],mylist[min_index]=mylist[min_index],mylist[i] return mylist #验证 mylist = sort_list([0,4,5,6,7,3,2,6,9,8,1,66,55]) print (mylist)    来源: https://www.cnblogs.com/1994tj/p/11728467.html

java学习笔记——集合与泛型

三世轮回 提交于 2019-12-02 00:50:54
Collection系列集合 1. 数组的弊端: ①数组的长度不可变 ②数组中没有提供可以查看有效元素个数的办法 2. 集合的特点: ①集合的长度是可变的 ②集合可以添加任意类型的对象 ③集合中只能存对象 3.集合框架 java.util.Collection 接口: 是集合层次的根接口 |-- java.util.List 接口:有序的,允许重复的。因为 List 系列集合都具有索引值 |--java.util.ArrayList : 采用的数组结构存储元素。查询操作多时。 |--java.util.LinkedList : 采用的链表结构存储元素。增删操作多时选择。 |--java.util.Vector : 是一个古老的实现。线程安全,因此效率低 |-- java.util.Set 接口: 无序的,不允许重复的。 |--java.util.HashSet:是 Set 接口的典型实现类。 判断元素是否存在的依据是,先比较 hashCode 值,若 hashCode 值不存在 则直接存储,若 hashCode 值存在,再通过 equlas 比较两个对象的内容。 注意:重写 hashCode 和 equals 时二者需要保持一致! |--java.util.LinkedHashSet:是 HashSet 的子类,相较于 HashSet 多了链表维护元素的顺序。 增删效率低于

JavaSE学习笔记:集合框架、迭代器、泛型

穿精又带淫゛_ 提交于 2019-12-02 00:47:22
文章目录 一、集合框架概述 1.Collection和Map 2.Collection集合 3.Collection集合常用方法 二、迭代器 1.常用方法 2.如何获取迭代器 3.使用步骤(掌握) 4.使用实例 5.迭代器使用原理 三、增强型for循环(更常用) 1.简介 2.使用实例 3.注意点 四、泛型 1.泛型的概念 2.使用泛型的好处 2.1使用集合对象,不使用泛型会带来的问题 2.1.1实例 2.1.2注意点 2.2使用集合使用泛型 2.2.1实例 2.2.2注意点 3.定义和使用含有泛型的类 4.定义和使用含有泛型的方法 4.1定义方法 4.2实例 5.定义和使用含有泛型的接口 5.1第一种使用方式 5.2第二种使用方式 6.泛型通配符 6.1基本使用:只能作为方法的参数使用 6.2不能创建对象使用 6.3泛型的上限限定和下限限定(了解) 6.3.1上限 6.3.2下限 五、List集合 1、List接口的三大特点 2.List接口中带索引的方法(独有) 2.1方法使用实例 3.注意:操作索引的时候,一定要防止索引越界异常 4.ArrayList实现类 5.LinkedList实现类 5.1特点 5.2特有方法 5.3使用实例 6.Vector(了解) 六、Set集合 1.特点 2.HashSet(常用来去重) 2.1特点 2.2使用实例 3.哈希值 3