算法及数据结构
文章平均质量分 83
冷面寒枪biu
怕什么真理无穷, 进一寸有一寸的欢喜
展开
-
归并排序原理及Java实现
归并排序是基于归并操作的一种效率较高的排序算法,同快速排序一样,归并排序也是分治法的一种应用。其时间复杂度为:O(nlogn),最好和最坏情况下都是O(nlogn)。空间复杂度为O(n)。归并排序是一种稳定的排序算法(两个相等的数据,在排序后其先后顺序不变,因为归并不涉及两个相等的数据进行交换)。 归并排序的思想 归并排序的思想就是将待排序数列num[n]看做是n个有序数列,原创 2017-02-20 20:38:02 · 603 阅读 · 0 评论 -
快速排序算法原理分析及Java实现
排序算法不管是在学习、面试、工作中都很重要,其中,快速排序在比较排序算法中效率较高,时间复杂度为O(nlogn),最坏情况下时间复杂度为O(n^2)。空间复杂度为:O(nlogn)。1.快速排序算法原理 快速排序采取的是一种分治策略,假设将数的队列进行从小到大进行排列,其基本的步骤可分为: (1) 从待排序的数中取一个数作为比较的基准; (2) 对待排序数进行划分,将小于这个基准数的都放在原创 2017-01-13 20:12:34 · 845 阅读 · 1 评论 -
对于算法一些概念的小总结
一般采用渐进表达式来衡量算法的时间复杂度和空间复杂度,忽略了常数。首先要理解,指数增长是极其恐怖的,在算法运行时间中应当尽量避免。很多算法都可以用指数时间的穷举算法来实现,但是否存在多项式时间算法是计算机科学的核心问题。 这里再简单介绍一个标题的这些概念。 多项式规约:是指经过多项式个步骤将一个问题A转化为另一个问题B,多项式调用解决B问题的算法可以解决问题A。多项式规约,是证明一个问题是NPC的基础。 NP:NP问题的定义是:一个算法存在多项式检验算法,也就是给定一个解可以原创 2017-04-30 21:58:25 · 466 阅读 · 0 评论 -
10大排序算法大总结--Java实现
今天总结了一下排序算法,在这里给出总结。主要以代码形式给出,没有涉及过多的解释。但是都比较简单,看代码注释也可以看懂。首先,来个综述: 这是百度上的一个总结,为什么这里说有10种排序算法呢,这是因为加上了计数排序和桶排序,这两种排序方法再加上基数排序是3种线性排序方法。是不基于比较实现的,其他的都是基于比较实现的,其时间复杂度最低为O(nlongn),此性质可以进行证明。 直接插入排序原创 2017-08-26 22:51:13 · 548 阅读 · 0 评论 -
二分搜索及其变形应用
二分搜索(折半查找)是应用很广泛的一种算法,当出现有序序列时,我们可以立马想到能否可以用二分法,其写法也较为固定,但是如果不注意其变换条件也是很容易写错。下边给出了二分查找的非递归和递归写法,只要注意其边界判断和变换,代码很简单: 二分法的递归和非递归写法 package com.blog.binarysearch; /** * @Description: 二分法(二分搜索 折半查找)原创 2017-08-27 20:14:09 · 330 阅读 · 0 评论 -
智力题小总结
最近看了一些智力题,感觉有点意思,同时智力题也是面试中可能会问到的题,所以就记录下来以后看。 我觉得对于智力题,千万不要试图用穷尽和常规的办法去想答案,有时候强迫自己去转变一下思考的角度,可能答案就出来了。烧绳子题对于烧绳子这类题,其解题的关键就是明白:绳子是可以两头烧的,可以精确获得一半时间,如果只想着一端烧,必然不行。 1. 一条绳子(粗细不均,长短不一),从一头点燃,全部烧完要耗时1个小时原创 2017-10-30 20:40:47 · 720 阅读 · 0 评论 -
递归和回溯经典题目--n皇后问题
递归和回溯密不可分,可以把递归的过程就是回溯的过程。其中BFS,DFS等经典问题都是与递归和回溯的思想紧密相关的。我们可以不用纠结于每个问题的标签,只要能运用相关的思想解决问题即可。下边,来讨论一下回溯和递归的经典算法问题:n皇后问题。 问题描述: 我们可以把此问题看成递归图: 此题关键是:如何判断冲突。也就是列,对角冲突原创 2017-12-13 20:25:57 · 795 阅读 · 0 评论 -
数据结构及算法练习--树相关
上一章写了总结了一些链表的算法操作,另外,在实际中树尤其是二叉树的操作也是很重要的,接下来再总结一下。类名后边的数字是剑指offer书上的题号,题目都是在牛客网上AC的,但是它们的那个平台的方法入口名有些不规范。 判断是否是二叉搜索树的后序遍历 /** * 题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。原创 2018-01-27 19:09:42 · 334 阅读 · 0 评论 -
数据结构及算法练习--链表相关
最近用Java写了一些算法题,在这里分类总结一下,主要是剑指offer上的,下边就直接给相关代码实现,不多做解释了,可以直接看代码读懂。类名后边的数字是剑指offer书上的题号,题目都是在牛客网上AC的,但是它们的那个平台的方法入口名有些不规范 删除链表中重复的结点 /* public class ListNode { int val; ListNode next =原创 2018-01-27 18:43:19 · 356 阅读 · 0 评论