本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
fantaxy025025 - johnsmith9th
- zysnba
- xiangjie88
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- jickcai
- gengyun12
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sichunli_030
- sam123456gz
- 龙儿筝
- arpenker
- tanling8334
- kaizi1992
- gaojingsong
- xpenxpen
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- luxurioust
- lemonhandsome
- jbosscn
- mengjichen
- zxq_2017
- lzyfn123
- nychen2000
- forestqqqq
- wjianwei666
- ajinn
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- kingwell.leng
- mwhgJava
最新文章列表
数据结构与算法-表
数据结构与算法-表
我们将处理一般的型为:A1、A2、A3....AN的表,这个表的大小为N,不包含有任何一个元素大小为0的我们称为空表。 我们称为An+1为An的后继、 An-1为An的前驱。表的实现为简单的数组和链表两种。
一、简单数组
简单的数组我们需要给定的最大大小并且各个元素相间内存空间是连续的。数组在操作中:查找需要消耗O(1),但是在插入和删 ...
算法的稳定定性及各算法稳定性分析
引用【1】选择排序、快速排序、希尔排序、堆排序不是稳定的排序算法
冒泡排序、插入排序、归并排序和基数排序都是稳定的排序算法。
【2】研究排序算法的稳定性有何意义?
首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前两个相等的数据其在序列中的先后位置顺序与排序后它们两个先后位置顺序相同。
再简单具体一点,如果A i == A j,Ai 原来在 Aj 位置前,排序后 Ai ...
每周一道数据结构(三)树、二叉树、最优二叉树
原帖地址:http://www.cnblogs.com/coder2012/archive/2013/06/05/3102868.html树
树形结构是一类非常重要的非线性结构,它可以很好地描述客观世界中广泛存在的具有分支关系或层次特性的对象,因此在计算机领域里有着广泛应用,如操作系统中的文件管理、编译程序中的语法结构和数据库系统信息组织形式等。
树的相关定义
节点的度:一个节 ...
数据结构与算法——算法速率
O()表示法是处理近似计算的一种数学途径,当我们写下某个特定的排序算法对n个记录进行排序所需时间是O(n2)时,我们的意思是,最坏情况下,所需时间随着n的平方变化。O()表示法对我们在度量时间,内存等的值设置了上限。
有时我们会遇到复杂的O()函数,随着n的增大, 最高阶的项会主宰函数的值,习惯做法是去掉所有低阶项,对任何常数项不予考虑。如O(n2+3n)和O(n2)一样等价,这实际上 ...
数据结构与算法——二叉树遍历
首先定义一个二叉树结构如下
class BNode{
private String name;
private BNode left,right;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
...
求一个字符串中连续出现次数最多的子串
题目: 求一个字符串中连续出现次数最多的子串,例如:abcbcd 最多的子串为bc
#include <iostream>
#include <string.h>
using namespace std;
char substr[255];
void findmaxsubstr(char *str){
int len=strlen(str);
int c ...
常用排序算法递归篇之堆排序
在讲堆排序之前,我们先来了解一下什么是堆,堆的定义如下:
n个关键字序列array[0...n-1]称为(Heap),当且仅当该序列满足如下性质:
array[i] <= array[2i + 1] && array[i] <= array[2i + 2] (1 ≤ i ≤ n),当然,这是小顶堆,大顶堆则换成>= ...
常用排序算法递归篇之堆排序
在讲堆排序之前,我们先来了解一下什么是堆,堆的定义如下:
n个关键字序列array[0...n-1]称为(Heap),当且仅当该序列满足如下性质:
array[i] <= array[2i + 1] && array[i] <= array[2i + 2] (1 ≤ i ≤ n),当然,这是小顶堆,大顶堆则换成>= ...
常用排序算法递归篇之归并排序
合并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法的一个非常典型的应用。合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。合并排序也叫归并排 ...
常用排序算法递归篇之快速排序
上一篇讲了几种非递归实现的常用排序算法,接下来把常用的几种用递归实现的排序算法也讲一下。本篇先讲快速排序,首先来描述一下快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
快速排序的实现描述:
...
字典与散列表
一、字典
字典(dictionary)是一些元素的集合。每个元素有一个称作key 的域,不同元素的key各
不相同。有关字典的操作有:
• 插入具有给定关键字值的元素。
• 在字典中寻找具有给定关键字值的元素。
• 删除具有给定关键字值的元素。
随机访问:若仅按照一个字典元素本身的关键字来访问该元素。
顺序访问:指按照关键字的递增顺序逐个访问字典中的元素。顺序访问需借助于Begin ( ...
排序算法复习(2)——合并排序
合并排序的重点就是怎么原地(in-place)合并已排序的两个子序列。
关于合并子函数:
(1)写了两个,一个是原地合并;
函数void inplace_merge(/*in-out*/int* a,/*in*/int low,/*in*/int q,/*in*/int high)
(2)一个是非原地合并。
详见函数int merge(/*in*/int* a,/* ...
LeetCode题目 Jump Game II
题目:
Given an array of non-negative integers, you are initially positioned at the first index of the array.
Each element in the array represents your maximum jump length at that position.
Your ...
LeetCode题目 Insert Interval
题目:
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessary).
You may assume that the intervals were initially sorted according to their start times ...