排序-归并排序

概念

归并排序就是利用归并的思想实现的排序算法。归并排序的原理:假设初始序列含有n个记录,该序列可以看成n个有序的子序列,其中每个子序列的长度为1,然后两两归并,得到⌈n/2⌉(⌈x⌉表示不小于x的最小整数)个长度为2或者1的子序列,然后再两两归并,……,如此重复直到得到1个长度为n的有序序列为止。

Tianma's avatar
Tianma 4月 27, 2016

排序-堆排序

概念

: 堆是具有下列性质的完全二叉树:每个节点的值都大于或等于其左右孩子(如果存在的话)的值,称为最大堆;或者每个节点的值都小于或等于其左右孩子(如果存在的话)的值,称为最小堆。

Tianma's avatar
Tianma 4月 24, 2016

排序-希尔排序

概念

希尔排序是插入类排序算法,它的本质就是分组插入排序,它采取分割策略:将相距某个“增量”的记录组成一个子序列,保证在每个子序列内部分别进行插入排序后得到的结果是基本有序。

Tianma's avatar
Tianma 4月 21, 2016

排序-插入排序

概念

插入排序是插入类的排序算法,基本原理:将一个记录插入到已经排好序的有序表中,从而得到一个新的记录数增加1的有序表。

Tianma's avatar
Tianma 4月 21, 2016

Java-IPv4地址和int类型数字的互相转换

问题分析

对于ipv4的地址来说,如果用字符串的形式存储的话,其占用字节就比较大,比如对于IPv4地址0.0.0.0的字符串,就需要7个字节,IPv4为255.255.255.255 的字符串,需要15个字节,也就是说存储一个ip需要占用7~15个字节。

Tianma's avatar
Tianma 4月 21, 2016

排序-选择排序

概念

简单选择排序是选择类的排序,算法原理:第i次排序(1≤ i ≤n-1),从待排序的n-i+1个记录中, 进行n-i次关键字比较,从n-i+1个记录中选出最小的,并和第i-1个记录进行交换。

Tianma's avatar
Tianma 4月 21, 2016

排序-冒泡排序及其优化

概念

冒泡排序是一种交换排序,它的基本思想是:两两比较相邻记录的关键字,如果反序则交换,直至没有反序的记录为止。
因为按照该算法,每次比较会将当前未排序的记录序列中最小的关键字移至未排序的记录序列最前(或者将当前未排序的记录序列中最大的关键字移至未排序的记录序列最后),就像冒泡一样,故以此为名。

Tianma's avatar
Tianma 4月 20, 2016

查找-二叉搜索树(Java实现)

前言

如果查找的数据集是有序的线性表,并且是顺序存储的,查找可以用折半查找、插值查找、斐波那契查找算法(详细算法见:有序表查找(折半、插值、斐波那契查找))等实现。但是正是因为他们是顺序的,所以在插入和删除操作中需要耗费大量时间,也就是说这些算法适合静态查找(只有查找操作),不适合动态查找(不仅有查找操作还有插入删除等操作)。而二叉搜索树正适合动态查找。

Tianma's avatar
Tianma 4月 13, 2016

查找-有序表查找(折半查找,插值查找,斐波拉契查找)

引言

如果待查找的数组是有序的,那么此时的查找就是有序表查找,这对于查找的帮助是很大的。属于有序表查找的有:折半查找(二分查找)、插值查找以及斐波那契查找。

Tianma's avatar
Tianma 4月 11, 2016

查找-顺序查找

定义

顺序查找又称为线性查找,其算法思路是从数组中的第一个(或最后一个)记录开始,将数组中元素逐个与需要查找的关键字进行比对,若发现有相等的,则查找成功;若始终未能相等,则查找失败。

Tianma's avatar
Tianma 4月 11, 2016