last

顺序表 删除指定范围

拜拜、爱过 提交于 2020-03-07 02:31:32
题目:设计一个高效的算法,从顺序表L中删除所有值介于x和y之间(包括x和y)的所有元素(假设y>=x),要求时间复杂度为O(n),空间复杂度为O(1)。 struct _seqlist { ElemType elem [ MAXSIZE ] ; int last ; } ; typedef struct _seqlist SeqList ; void del_x2y ( SeqList * L , ElemType x , ElemType y ) { int i = 0 , j = 0 ; for ( i = 0 ; i < MAXSIZE ; i ++ ) { if ( L -> elem [ i ] < x || L -> elem [ i ] > y ) { L -> elem [ j ++ ] = L -> elem [ i ] ; //在范围外,则继续赋值 } } L -> last = j ; } 来源: CSDN 作者: 江海寄余生* 链接: https://blog.csdn.net/weixin_45454859/article/details/104699372

C#各种排序算法代码实现

被刻印的时光 ゝ 提交于 2020-03-06 11:48:49
转自: https://blog.csdn.net/sniper007/article/details/53080131 排序是计算机内经常进行的一种操作,其目的是将一组“无序”的记录序列调整为“有序”的记录序列。分内部排序和外部排序。若整个排序过程不需要访问外存便能完成,则称此类排序问题为内部排序。反之,若参加排序的记录数量很大,整个序列的排序过程不可能在内存中完成,则称此类排序问题为外部排序。内部排序的过程是一个逐步扩大记录的有序序列长度的过程。 将杂乱无章的数据元素,通过一定的方法按关键字顺序排列的过程叫做排序。假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。 分类 稳定排序:假设在待排序的文件中,存在两个或两个以上的记录具有相同的关键字,在用某种排序法排序后,若这些相同关键字的元素的相对次序仍然不变,则这种排序方法是稳定的。其中冒泡,插入,基数,归并属于稳定排序,选择,快速,希尔,堆属于不稳定排序。 就地排序:若排序算法所需的辅助空间并不依赖于问题的规模n,即辅助空间为O(1),则称为就地排序。(百度百科) 冒泡排序 已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1

java基础进阶篇(七)_LinkedHashMap------【java源码栈】

别说谁变了你拦得住时间么 提交于 2020-03-06 10:31:21
目录 一.概述 二.特点 三.应用场合 四.构造方法 1.参数为空 2.accessOrder 五.源码结构分析 六.常见问题 1.如何实现的元素有序? 2.如何保证顺序的正确以及同步 3.如何实现两种顺序(插入顺序或者访问顺序)? 4.为什么重写containsValue()而不重写containsKey()? 七.常用方法 一.概述   LinkedHashMap是HashMap的子类,关于HashMap可以看下前面的章节: java基础进阶篇 HashMap public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V> 二.特点 非线程安全 LinkedHashMap 内部保证顺序; 分插入顺序和访问排序两种, 如果是访问顺序,那put和get操作已存在的Entry时,都会把Entry移动到双向链表的表尾(其实是先删除再插入)。 HashMap不保证插入顺序. LinkedHashMap存取数据,还是跟HashMap一样使用的Entry[]的方式,双向链表只是为了保证顺序。 LinkedHashMap是继承于HashMap,是基于HashMap和双向链表来实现的。 LinkedHashMap的插入顺序和访问顺序可以由开发者自己决定. 三.应用场合   HashMap是无序的,当我们希望有顺序(

线性表和链表

佐手、 提交于 2020-03-04 23:33:14
线性表的定义: (List) typedef int position; typedef struct LNode* PtrToNode; typedef PtrToNode List; struct LNode{//数据从data[0]开始,last记录线性表中最后一个元素在表中的位置,表长为last+1; int date[maxsize]; position last;//表空时,last = -1; }; 以下是顺序表的主要操作以及实现: 1.初始化(构造一个空表) List MakeEmpty() { List L; L = (List)malloc(sizeof(struct LNode)); L->last = -1;//表示表空 return L; } 2.查找:在线性表中,查找与给定值x相等的数据元素。查找成功就返回X在线性表中的下标,否则返回错误信息error #define error -1 position Find(List L, int x) { position i =0;//i记录下标,从0开始 while(i<=L->Last && L->date[i]!=x) i++; //跳出while时说明:要么i>last,要么x=date[i] if(i>L->Last)//检查i是否越界 return error; else return i; } 3

查看redis是否支持持久化

旧街凉风 提交于 2020-03-04 19:09:34
redis-cli -h 172.21.1.74 172.21.1.74:6379> auth yourpasswd OK 查看持久化信息 172.21.1.74:6379> info persistence Persistence loading:0 rdb_changes_since_last_save:120474607 rdb_bgsave_in_progress:0 rdb_last_save_time:1581417175 rdb_last_bgsave_status:ok rdb_last_bgsave_time_sec:0 rdb_current_bgsave_time_sec:-1 rdb_last_cow_size:249856 aof_enabled:0 aof_rewrite_in_progress:0 aof_rewrite_scheduled:0 aof_last_rewrite_time_sec:-1 aof_current_rewrite_time_sec:-1 aof_last_bgrewrite_status:ok aof_last_write_status:ok aof_last_cow_size:0 查看配置文件: 172.21.1.74:6379> config get * 来源: 51CTO 作者: 纪仁旺 链接: https:/

MySQL 处理重复数据:防止表中出现重复数据、统计、过滤、删除重复数据

北慕城南 提交于 2020-03-04 10:23:46
MySQL 处理重复数据 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。 防止表中出现重复数据 你可以在 MySQL 数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。 让我们尝试一个实例:下表中无索引及主键,所以该表允许出现多条重复记录。 CREATE TABLE person_tbl ( first_name CHAR(20), last_name CHAR(20), sex CHAR(10) ); 如果你想设置表中字段 first_name,last_name 数据不能重复,你可以设置双主键模式来设置数据的唯一性, 如果你设置了双主键,那么那个键的默认值不能为 NULL,可设置为 NOT NULL。如下所示: CREATE TABLE person_tbl ( first_name CHAR(20) NOT NULL, last_name CHAR(20) NOT NULL, sex CHAR(10), PRIMARY KEY (last_name, first_name) ); 如果我们设置了唯一索引,那么在插入重复数据时,SQL 语句将无法执行成功,并抛出错。

python标准库学习6

喜你入骨 提交于 2020-03-04 10:02:35
使用 apply 函数 def function(a, b): print a, b apply(function, ("whither", "canada?")) apply(function, (1, 2 + 3))    whither canada? 1 5 使用 apply 函数传递关键字参数 def function(a, b): print a, b apply(function, ("crunchy", "frog")) apply(function, ("crunchy",), {"b": "frog"}) apply(function, (), {"a": "crunchy", "b": "frog"}) crunchy frog crunchy frog crunchy frog    使用 apply 函数调用基类的构造函数 class Rectangle: def _ _init_ _(self, color="white", width=10, height=10): print "create a", color, self, "sized", width, "x", height class RoundedRectangle(Rectangle): def _ _init_ _(self, **kw): apply(Rectangle._ _init

Libre 6012 「网络流 24 题」分配问题 (网络流,费用流)

时光毁灭记忆、已成空白 提交于 2020-03-04 04:17:31
Libre 6012 「网络流 24 题」分配问题 (网络流,费用流) Description 有n件工作要分配给n个人做。第i个人做第j件工作产生的效益为 \(c_{ij}\) 。试设计一个将n件工作分配给n个人做的分配方案,使产生的总效益最大。 对于给定的n件工作和n个人,计算最优分配方案和最差分配方案。 Input 第1 行有1 个正整数n,表示有n件工作要分配给n 个人做。 接下来的n 行中,每行有n 个整数 \(c_{ij}\) ,1≤i≤n,1≤j≤n,表示第i 个人做第j件工作产生的效益为 \(c_{ij}\) 。 Output 将计算出的最小总效益和最大总效益输出 Sample Input 5 2 2 2 1 2 2 3 1 2 4 2 0 1 1 1 2 3 4 3 3 3 2 1 2 1 Sample Output 5 14 Http Libre: https://loj.ac/problem/6012 Source 网络流,费用流 解决思路 此题的网络流做法还是比较明显的。对于每一个人,从源点连边容量为1代价为0,而对于每一项工作,连到汇点容量为1,代价为0。对于每一个 \(c_{ij}\) ,连接人i和工作j,容量为1代价为 \(c_{ij}\) 。然后分别跑最小费用最大流和最大费用最大流即可。 代码 #include<iostream> #include

三维数组转换成二维数组的方法是循环2次后再重新放到一个新数组就可以了

不羁岁月 提交于 2020-03-03 21:08:41
三维数组如下: Array ( [0] => Array ( [0] => Array ( [id] => 1 [project] => 美的空调 [pro_money] => 3000022.00 [corp_name] => 美的 [status] => 2 [address] => 深圳宝安区 [position] => 总经理 [name] => 无名 [telphone] => 0524-8569623 [mobile] => 18859685952 [email] => 89343432@qq.com [first_money] => 10000.00 [last_money] => 20000.00 [business] => 张三 [help_man] => 李铭 [check_time] => 2019-11-25 [check_setup] => 广东审核机构 [last_check_time] => 2019-11-25 [admin_id] => 5 [create_time] => 2019-11-25 15:00:41 ) ) [1] => Array ( [0] => Array ( [id] => 3 [project] => 天龙项目 [pro_money] => 1000000.00 [corp_name] => 沃尔沃 [status] =>

常用c++

寵の児 提交于 2020-03-03 18:22:28
std::reverse() function of STL in header file algorithm void reverse(BidirectionalIterator first, BidirectionalIterator last); 翻转 BidirectionalIterator is an iterator that can be used to access any elements of a container in both forward and backward direction. # include <iostream> # include <algorithm> # include <vector> using namespace std ; int main ( ) { // Reversing directly from beginning to end cout << "\nReverse full array:\n" ; int a [ ] = { 4 , 5 , 6 , 7 } ; std :: reverse ( std :: begin ( a ) , std :: end ( a ) ) ; // Print the array std :: cout << a [ 0 ] << a [ 1 ] << a [ 2 ] << a