Jaster_wisdom的专栏

待到山花烂漫时,她在丛中笑

LeetCode56. 合并区间

题目大意:合并给定的一些区间,使得它们各个区间之间没有重叠。题目分析:首先,对给定的区间,按照左边的临界值进行从小到大排序,然后维持一个[left,right]区间。首先,将第一个区间赋给[left,right],然后看第二个区间[x,y],若x<=right,那么合并后的区...

2018-07-03 18:38:08

阅读数:25

评论数:0

leetcode4. Median of Two Sorted Arrays(求两个排序数组的中位数)

题目大意:已知两个排好序的数组nums1和nums2,长度分别为m和n,要求的是合并nums1和nums2之后的所有数的中位数。时间复杂度要求O(log(m+n))题目分析:容易想到的是归并排序算法,用两个指针分别指向nums1和nums2,分别比较两个指针所指向的元素的大小,哪个小,哪个就往后移...

2018-04-10 20:24:30

阅读数:39

评论数:0

九度OJ 1107 搬水果

题目描述:     在一个果园里,小明已经将所有的水果打了下来,并按水果的不同种类分成了若干堆,小明决定把所有的水果合成一堆。每一次合并,小明可以把两堆水果合并到一起,消耗的体力等于两堆水果的重量之和。当然经过 n‐1 次合并之后,就变成一堆了。小明在合并水果时总共消耗的体力等于每次合并所耗...

2016-08-07 16:29:24

阅读数:560

评论数:0

华为OJ 字符串排序

描述 编写一个程序,将输入字符串中的字符按如下规则排序。规则1:英文字母从A到Z排列,不区分大小写。      如,输入:Type 输出:epTy规则2:同一个英文字母的大小写同时存在时,按照输入顺序排列。    如,输入:BabA 输出:aABb规则3:非英文字母的其它字符保持原来的位置。...

2016-07-31 22:57:53

阅读数:682

评论数:0

九度OJ 1061 成绩排序

题目描述:     有N个学生的数据,将学生数据按成绩高低排序,如果成绩相同则按姓名字符的字母序排序,如果姓名的字母序也相同则按照学生的年龄排序,并输出N个学生排序后的信息。 输入:     测试数据有多组,每组输入第一行有一个整数N(N     每个学生的数据包括姓名(长...

2016-07-16 22:06:44

阅读数:497

评论数:0

九度OJ 1007 奥运排序问题

题目描述: 按要求,给国家进行排名。 输入: 有多组数据。 第一行给出国家数N,要求排名的国家数M,国家号从0到N-1。 第二行开始的N行给定国家或地区的奥运金牌数,奖牌数,人口数(百万)。 接下来一行给出M个国家号。 输出: 排序有4种方式: 金牌总数 奖牌总...

2016-07-14 21:07:01

阅读数:798

评论数:0

九度OJ 1041 简单排序

题目描述: You are given an unsorted array of integer numbers. Your task is to sort this array and kill possible duplicated elements occurring in it. ...

2016-07-09 19:24:51

阅读数:481

评论数:0

九度OJ 1023

题目描述:     Excel可以对一组纪录按任意指定列排序。现请你编写程序实现类似功能。     对每个测试用例,首先输出1行“Case i:”,其中 i 是测试用例的编号(从1开始)。随后在 N 行中输出按要求排序后的结果,即:当 C=1 时,按学号递增排序;当 C=2时,按姓名的非递减字...

2016-07-01 08:58:40

阅读数:1232

评论数:0

九度OJ 1202

题目意思是,输入n,表示n个数,然后输入这n个数,最后输出这从小到大的n个数。 这道排序题因为数量规模在1~100之间,所以几乎用所有的排序算法都不会超时,我这里用的是这样的方法,类似冒泡排序。 首先第一轮循环,将每一个数字与后面的数字进行比较,如果它的值比后面的值要大,则进行交换。否则顺序保...

2016-05-31 15:38:51

阅读数:541

评论数:0

经典排序之选择排序

选择排序 基本思想: 选择排序算法采用的方法比较直观:通过在待排序子表中完整地比较一遍以确定最大(小)元素,并将元素放在子表的最前(后)面。   时间复杂度: O(n*2)   稳定性分析:该算法是不稳定排序,因为关键字相同的元素在排序过程中可能会交换次序。例如,对数据表(3,3,2)...

2016-05-24 18:57:42

阅读数:397

评论数:0

经典排序之希尔排序

希尔排序 基本思想: 将待排序的序列分为若干组,在每组内进行直接插入排序,以使整个序列基本有序,然后再对整个序列进行直接插入排序。 该方法实质上是一种分组插入方法。 具体来说,先取一个小于n的整数d1作为增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。现在各组内进行直接插入排...

2016-05-24 18:22:38

阅读数:1574

评论数:0

经典排序算法之冒泡排序

冒泡排序 基本思想: 从一端开始,逐个比较相邻的两个元素,发现倒序则交换。典型的做法是从后往前,或从下往上逐个比较相邻的元素,发现倒序就进行交换。一轮比较之后,一定可以将最大的元素交换到其最终位置上。   时间复杂度:O(n*2)   稳定性分析:稳定的排序算法 这里说明一下,何为排序算法的稳...

2016-05-24 16:20:04

阅读数:576

评论数:0

优先队列 priority_queue

优先队列本质上还是属于队列的范畴,只不过多了一项功能,根据用户自定义的数据进行任意规则的动态排序。 它的模板声明包括三个参数,priority_queue(Type,Container,Functional) 第一个是数据类型,可以是整型、结构体类型、类类型等等,第二个参数是容器,一般是vec...

2016-05-20 09:19:43

阅读数:404

评论数:0

计数排序

前几篇博客排序算法都是 用的比较排序,时间复杂度最低的是 O(nlgn),这也是比较排序最优的时间复杂度。 这次计数排序用的是线性时间复杂度的排序,也就是说不是通过比较来确定排序顺序的。 计数排序是 假设n个元素中的每一个都是在0到k区间内的一个整数,也就是整个数组里最大的数是 k,这是我们需...

2016-05-08 17:43:07

阅读数:929

评论数:0

快速排序

在大一下 上数据结构的时候,快速排序这节听得是云里雾里,代码实现压根不知道从哪里入手。不过,今天看《算法导论》,耐着性子看完觉得不是很难。不过,要证明它的最坏时间复杂度为O(n*2),平均时间期望复杂度为O(n*lgn),应该来说,快速排序是实际排序应用中最好的选择。 快速排序的大体思想是这样的:...

2016-05-07 15:59:40

阅读数:765

评论数:0

堆排序

堆排序算法时间复杂度为 O(nlgn) 堆从结构上讲,应该是一棵完全二叉树。在堆排序中一个很重要的概念是,维持最大堆的特性。最大堆就是每个节点的值比它左右孩子节点都要大。 我们首先将非叶子节点 都维持最大堆的特性一次。就是说保证非叶子节点它的左右孩子都比它的值要小。build_max_heap函数...

2016-05-06 22:55:11

阅读数:1600

评论数:0

经典排序之归并排序

归并排序时间复杂度为O(nlgn) 归并算法采取分治策略,直观上其操作如下: 1.分解:分解待排序的n个元素的序列成各具n/2个元素的两个子序列 2.解决:使用归并排序递归地排序两个子序列 3.合并:合并两个已排序的子序列以产生已排序的答案 #include using nam...

2016-04-26 23:23:27

阅读数:401

评论数:0

经典排序之插入排序

插入排序的思路可以这样形象地理解:整理手中的扑克牌,每抓到一张牌,比较它与之前手中的牌的大小,插在合理的位置。 对于少量元素的排序,它是一个有效的算法。它的时间复杂度为 O(n^2) #include using namespace std; int main(){ //插入排序 ...

2016-04-25 22:15:12

阅读数:515

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭