自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

guoziqing506的博客

记录学习点滴,享受算法乐趣

  • 博客(11)
  • 收藏
  • 关注

原创 搜索插入位置

题目描述:给定一个排序数组和一个目标值,如果在数组中找到目标值则返回索引。如果没有,返回到它将会被按顺序插入的位置。你可以假设在数组中无重复元素。样例:[1,3,5,6],5 → 2[1,3,5,6],2 → 1[1,3,5,6], 7 → 4[1,3,5,6],0 → 0解题的思路跟上一节的二分查找是一模一样的,在介绍二分查找的时候,还

2016-03-23 09:01:20 872

原创 二分查找

题目描述:给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1。样例:在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2。二分查找是算法中非常重要的思想。正常情况下,我们在一个数组中查找一个数是否存在,该怎么做呢?当然是与数组中的元素一

2016-03-22 19:43:21 2560

原创 丢失的第一个正整数

题目描述:给出一个无序的整数数组,找出其中没有出现的最小正整数。样例:换个角度思考这个问题,我们只需要将数组做一种特殊的排序,使得正整数“诸神归位”(例如[3, 4, -1, 1]中令1在第一位,3在第三位,4在第四位,也就是变成[1, -1, 3, 4]),那么第一个对不上的位所代表的正整数就是第一个缺失的,例如,在前面的例子中数组第二位是-1,而不是2,那么2就是丢失的第一

2016-03-22 08:42:05 2424

原创 桶排序

百度百科上对于桶排序的描述是这样的:桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序)。说的更清楚一些,可以这样理解:假设现在全国有500w考生参加考试,我们现在需要对所有考生的成绩进行排序,那么即便用我们前面讲过的“归并排序”,“快速排序”等方

2016-03-22 08:31:16 1127

原创 快速排序

快速排序:输入:乱序n长数组输出:排序好的n长数组时间复杂度:O(nlogn)空间复杂度:O(1)快速排序的基本逻辑是这样的:每次随机挑选一个数组的元素,作为“枢轴”,然后扫描数组中其他的所有元素,将小于枢轴的,排列在枢轴的左侧,大于枢轴的,排列在枢轴的右侧。然后再分别对枢轴左右两侧的部分数组进行快速排序(这是一个递归的逻辑),这样,当递归运算“触底”后(每次需要快排的

2016-03-22 08:27:20 1001

原创 归并排序

归并排序:输入:乱序n长数组输出:排序好的n长数组时间复杂度:O(nlogn)空间复杂度:O(n)我们已经学习了冒泡排序,选择排序与插入排序。深究这几种方法的原理,都是通过反复扫描数组,调整数组内元素的排列顺序来实现的。那么有没有其他思路呢?我们来看归并排序的方法。其实,就排序本身讲,归并排序并不是效率最好的(其空间复杂度高于后面要讲的快速排序),但是学习归

2016-03-21 20:18:18 1158

原创 合并排序数组

在lintcode中关于合并排序数组有两道题目:1. 合并两个排序的整数数组A和B变成一个新的数组。给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]2. 合并两个排序的整数数组A和B变成一个新的数组。给出A = [1, 2, 3, empty, empty] B = [4,5],合并之后A将变成[1,2,3,4,5]。其中,假设数

2016-03-21 20:14:41 6586

原创 插入排序

插入排序(Insertion Sort):输入:乱序n长数组输出:排序好的n长数组时间复杂度:O(n^2)空间复杂度:O(1)插入排序原理与冒泡排序和选择排序(关于这两种排序见我上一篇博客)是类似的,都是通过多次对数组扫描完成,不同的是,插入排序需扫描的部分数组的长度是不断递增的,因为它是通过不断向已经排序好的数组中插入新的元素完成排序的,随着插入元素的递增,数组长度递

2016-03-21 20:07:21 815

原创 冒泡排序与选择排序

冒泡排序(Bubble Sort):输入:乱序n长数组输出:排序好的n长数组时间复杂度:O(n^2)空间复杂度:O(1)冒泡排序的原理是对数组多次扫描,每次扫描都对相邻的两个元素的顺序进行调整。假设我们按升序排列数组,那么相邻两个元素中如果左边的元素大于右边的元素,就交换这两个元素位置,否则不交换。依次扫描过数组中全部元素。可见第一次扫描就使得数组的最大值排在了数组的最

2016-03-21 19:57:24 936

原创 排序

排序算法属于算法基本功,单论难度,都是非常简单的。所以经常作为算法的入门,作为新手来说,可以作为初始的学习材料。训练排序主要的目的,是了解基本的排序原理和将算法编写为代码的基本方法。 大致来说,常见的排序算法有以下几种:冒泡排序(Bubble Sort);选择排序(Selection Sort);插入排序(Insertion Sort );归并排序(Merge Sort);快速排序(Q

2016-03-21 19:43:00 661

原创 自序:我为什么写这样一个博客

有时我在想,我活在这个世界上,到底追求的是什么呢?抛开金钱,美女二者不谈,还剩下的,只怕是做一点自己喜欢的事情。写这个博客,在我个人看来,就是个有趣的事。我打小脑子并不算太好使,虽不说“冥顽不化”,但也绝对不是“玲珑剔透”。到了高考,和智商最相关的数学就自然而然,成为我最差的一门。我曾经幻想,我终于可以上大学了,终于不用纠结于令我“发指”的数学了。然而,上天总会给人开各种令你“哭笑不得

2016-03-21 19:35:28 1085 3

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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