sort

Leetcode 148. Sort List python

為{幸葍}努か 提交于 2019-12-25 10:50:57
Leetcode 148. Sort List 题目 解法1:利用最小堆 解法2:利用归并排序的思想 题目 Sort a linked list in O(n log n) time using constant space complexity. Example 1: Input: 4->2->1->3 Output: 1->2->3->4 Example 2: Input: -1->5->3->4->0 Output: -1->0->3->4->5 解法1:利用最小堆 循环一次整个链表,将node的值存入一个最小堆中,再循环这个最小堆,将元素一次pop出来,构建新链表 class Solution ( object ) : def sortList ( self , head ) : """ :type head: ListNode :rtype: ListNode """ if not head : return None l = [ ] while head : heapq . heappush ( l , head . val ) head = head . next first_val = heapq . heappop ( l ) first = ListNode ( first_val ) tmp = first while l : curr_val = heapq

继承与扩展方法的比较

余生长醉 提交于 2019-12-25 09:07:09
前段时间,我做的一个项目有一个小小的需求,即:对范型集合类型ObservableCollection<T>进行排序。ObservableCollection<>这个类型在WPF和Silverlight中非常有用,因为它实现了INotifyCollectionChanged接口,继而在进行数据绑定的时候,如果将ItemsControl的ItemsSource属性绑定到一个ObservableCollection<T>对象上,那么当这个集合变化的时候(Add, Remove, Insert, Clear等等),相应的ItemsControl也会同步Update。由于ObservableCollection<T>继承自Collection<T>,因此它没有List<T>提供的Sort方法,所以如果我们想对ObservableCollection进行排序的话,就需要自己实现。 针对这个需求,我想到两个方案解决,方案一就是写一个子类,继承ObservableCollection,进而在其中实现Sort方法,相应的代码如下: Code 1 public class SortableObservableCollection < T > : ObservableCollection < T > 2 { 3 public void Sort() 4 { 5 Sort(Comparer < T >

排序算法 (Java)

余生长醉 提交于 2019-12-24 18:32:39
视频参考:B站:马士兵,青岛大学–王卓。 时间复杂度 Big O 算法花费时间随着问题规模的扩大的变化 不考虑必须要做的操作:循环、赋初值、程序初始化…; 不考虑常数项; 不考虑低次项; 一般时间复杂度都是“最差”的情况 E.g.: 访问数组某个位置的值: O(1) 访问链表某个位置的值: O(n) 求数组平均数:O(n) 选择排序 SelectionSort 最简单 最没用: O(n^2), 不稳定 找到最小的数的位置(索引) 把这个位置上的数和【0】上的数交换 把除第一个位置之后的剩余部分的数组重复过程,确定位置【1】的数 循环3的操作,直到最后一个数 时间复杂度:计算执行次数最多语句的时间随着规模扩大的规律,然后忽略常数项、低次项 笔记:外循环i控制每轮要排的最小值的索引;内循环遍历最小值索引后的每一位索引的值,与当前最小值索引上的值作比较,把最小的值换到最小值索引上。 /** * 选择排序 * @param arr */ public static void selectionSort(int[] arr) { //由于要保证i后面还有数才需要排序,所以i最大可以取到[arr.length-2]就行 for (int i = 0; i < arr.length-1 ; i++) { //执行n次 int minPos = i; //每次循环的要求的最小值的位置都加1 /

系统调优的4大子系统

拟墨画扇 提交于 2019-12-24 11:51:09
系统调优的4大子系统: 1、查看系统中使用cpu最多的进程 top->p ps -aux --sort -pcpu|more 2、找出系统中使用内存最多的进程 top->m ps -aux --sort -rss|more 3、找到系统对磁盘读写最多的进程 iostat和iotop iostat -d -k -p /dev/sda iotop -o -d 2 4、找到系统中使用网络最多的进程 nload和nethogs 来源: 51CTO 作者: holy2009 链接: https://blog.51cto.com/holy2010/2461247

C++ sort 函数用法

*爱你&永不变心* 提交于 2019-12-24 02:18:12
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,a+n,cmp); 是对数组a降序排序 又如: int cmp( const POINT &a, const POINT &b ){ if( a.x < b.x ) return 1; else if( a.x == b.x ){ if( a.y < b.y ) return 1; else return 0; } else return 0; } sort(a,a+n,cmp); 是先按x升序排序

视觉感受 7 种常用的排序算法及代码实现

寵の児 提交于 2019-12-23 17:46:19
来自:todayx.org 链接:http://www.blogjava.net/todayx-org/archive/2012/01/08/368091.html   一步一步实现代码。 1 快速排序 介绍:   快速排序是由 东尼·霍尔 所发展的一种 排序算法 。在平均状况下,排序 n 个项目要 Ο ( n log n )次比较。在最坏状况下则需要 Ο ( n 2 )次比较,但这种状况并不常见。事实上,快速排序通常明显比其他 Ο ( n log n ) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地被实现出来,且在大部分真实世界的数据,可以决定设计的选择,减少所需时间的二次方项之可能性。 步骤: 从数列中挑出一个元素,称为 "基准"(pivot), 重新排序数列,所有元素比基准值小的摆放在基准前面,所有元素比基准值大的摆在基准的后面(相同的数可以到任一边)。在这个分区退出之后,该基准就处于数列的中间位置。这个称为 分区(partition) 操作。 递归 地(recursive)把小于基准值元素的子数列和大于基准值元素的子数列排序。 排序效果: 算法思想:   基于分治的思想,是冒泡排序的改进型。首先在数组中选择一个基准点(该基准点的选取可能影响快速排序的效率,后面讲解选取的方法),然后分别从数组的两端扫描数组,设两个指示标志(lo指向起始位置

1098 Insertion or Heap Sort (25 分) 堆排序

余生长醉 提交于 2019-12-23 15:10:41
1098 Insertion or Heap Sort (25 分) According to Wikipedia: Insertion sort iterates, consuming one input element each repetition, and growing a sorted output list. Each iteration, insertion sort removes one element from the input data, finds the location it belongs within the sorted list, and inserts it there. It repeats until no input elements remain. Heap sort divides its input into a sorted and an unsorted region, and it iteratively shrinks the unsorted region by extracting the largest element and moving that to the sorted region. it involves the use of a heap data structure rather than a

结构体+sort方法

╄→尐↘猪︶ㄣ 提交于 2019-12-23 10:35:15
昨天做了一道简单但很麻烦的题,我只能想到结构体,并用了STL的sort方法解决了它.不过从中有许多细节问题. 题目: Problem Description Lcy wanted to choose 50 ACMers from m players to join HDU-ACM team. He made n competitions , and now is your task to make the ranklist. Here’re some instructions : Effective score : the sum of the best n-2 competitions’ score. One’s score in one competition : number of problems he(or she) solved divided the sum of problems all players solved. The ranklist is made , of course , by the effective score , what if some players have the same score ?Follow these rules : girls always come first , same again and younger

python排序之sort,sorted用法

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-22 18:37:00
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> python内置排序方式有两种,一种是针对列表的.sort()方法,另外一种是sorted()函数,他们方法类似,区别有两点 1、list.sort()方法只适合列表对象,sorted()函数适合任何可迭代对象。 2、list.sort()用于改变当前列表,sorted()返回一个新的序列。 用法示例: >>>help(sorted) Help on built-in function sorted in module builtins: sorted(...) sorted(iterable, key=None, reverse=False) --> new sorted list >>>ls = [5,1,9,7] >>> sorted(ls) [1, 5, 7, 9] >>>ls.sort() >>>ls [1, 5, 7, 9] #逆序 >>ls.sort(reverse = True) >>>ls [9,7,5,1] 通过key函数指定排序方法:(因为sort()和sorted()功能类似,之后都使用sorted()示例) #假定有个学生年级、年龄名单 >>>students = {'mhye':(2,18),'Jackey':(3,15),'Lucy':(1,16)} #如果想要按年级排序 >>

29_java之JDBC|SQL注入

随声附和 提交于 2019-12-22 13:01:35
01JDBC概念和数据库驱动程序 * A: JDBC概念和数据库驱动程序 * a: JDBC概述 * JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API, 可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。是Java访问数据库的标准规范 * JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。 * JDBC需要连接驱动,驱动是两个设备要进行通信,满足一定通信数据格式,数据格式由设备提供商规定, 设备提供商为设备提供驱动软件,通过软件可以与该设备进行通信。 * 我们使用的是mysql的驱动mysql-connector-java-5.1.39-bin.jar * b: 总结 * JDBC是java提供给开发人员的一套操作数据库的接口 * 数据库驱动就是实现该接口的实现类 02JDBC原理 * A: JDBC原理 * a: 描述 * Java提供访问数据库规范称为JDBC,而生产厂商提供规范的实现类称为驱动 * DBC是接口,驱动是接口的实现,没有驱动将无法完成数据库连接,从而不能操作数据库! 每个数据库厂商都需要提供自己的驱动,用来连接自己公司的数据库,也就是说驱动一般都由数据库生成厂商提供。 * 图解见 03准备数据 * A: 准备数据