数据结构和算法
文章平均质量分 74
羁士
后端开发工程师
展开
-
每日一练之Two sum [leetcode No.1]
Given an array of integers, return indices of the two numbers such that they add up to a specific target.You may assume that each input would have exactly one solution, and you may not use the sam原创 2017-04-17 20:40:23 · 367 阅读 · 0 评论 -
排序算法之归并排序的C++实现
归并排序是典型的分治法思想排序,其先归再并,基本思想如下:1. 从下往上的归并排序:将待排序的数列分成若干个长度为1的子数列,然后将这些数列两两合并;得到若干个长度为2的有序数列,再将这些数列两两合并;得到若干个长度为4的有序数列,再将它们两两合并;直接合并成一个数列为止。这样就得到了我们想要的排序结果。2. 从上往下的归并排序:它与"从下往上"在排序上是反方向的。它基本包括3原创 2017-06-02 21:40:55 · 515 阅读 · 0 评论 -
排序算法之快速排序的C++实现
快速排序由于排序效率在同为O(N*logN)的几种排序方法中效率较高,因此经常被采用,再加上快速排序思想----分治法也确实实用,因此很多软件公司的笔试面试题。该方法的基本思想是:1.先从数列中取出一个数作为基准数,一般取第一个数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.再对左右区间重复第二步,直到各区间只有一个数。虽然快速排序称为原创 2017-05-16 22:08:56 · 433 阅读 · 0 评论 -
排序算法之希尔排序的C++实现
希尔排序其实是直接插入排序的一种优化,不过是增加了一个步长进行分组插入罢了,又称为缩小增量排序。其基本思想:先将整个待排元素序列分割成若干个子序列(由相隔某个“增量”的元素组成的)分别进行直接插入排序,然后依次缩减增量再进行排序,待gap=1时,再对全体元素进行一次直接插入排序,数组便是有序的了。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率是很高的,因此希尔排序在时间效率上比直接插原创 2017-05-16 10:22:58 · 997 阅读 · 0 评论 -
简单排序算法之选择排序、直接插入排序和冒泡排序
简单排序包括简单选择排序、直接插入排序和冒泡排序。时间负责度均为O(n2).1、 简单选择排序(Selection sort)——不稳定基本思想:首先在未排序的数列中找到最小(or最大)元素,然后将其存放到数列的起始位置;接着,再从剩余未排序的元素中继续寻找最小(or最大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。 Templatevoid SelectS原创 2017-05-15 11:31:57 · 1337 阅读 · 0 评论 -
常见排序算法的稳定性分析和结论
首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的数其在序列的前后位置顺序和排序后它们两个的前后位置顺序相同。在简单形式化一下,如果Ai = Aj, Ai原来在位置前,排序后Ai还是要在Aj位置前。其次,说一下稳定性的好处。排序算法如果是稳定的,那么从一个键上排序,然后再从另一个键上排序,第一个键排序的结果可以为第二个键排序所用。基数排序就是这样,先按低位排序,逐转载 2017-05-15 10:42:45 · 1354 阅读 · 0 评论 -
算法的时间复杂度和空间负责度、最坏情况和平均情况
解决问题的效率与空间利用率,时间利用率,算法效率都有关系。算法(Algorithm)是什么呢?输入——接受一些输入或无输入输出——产生输出确定性——每条指令必须明确无歧义能行性——每条指令都可以执行,一个有限的指令集有穷性——执行一定步骤后终止此外,衡量一个算法的性能主要有四个指标:正确性,简明性,健壮性,效率。一个用高级语言编写的程序在计算机上运行时所消耗的时间取决于原创 2017-04-18 11:38:39 · 7770 阅读 · 0 评论 -
七大查找算法浅析
转自:http://www.cnblogs.com/maybe2030/p/4715035.html阅读目录1. 顺序查找2. 二分查找3. 插值查找4. 斐波那契查找5. 树表查找6. 分块查找7. 哈希查找 查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。本文简单概括性的转载 2017-10-04 22:42:09 · 2222 阅读 · 0 评论