在描述算法复杂度时,经常用到o(1), o(n), o(logn), o(nlogn)来表示对应算法的时间复杂度, 这里进行归纳一下它们代表的含义: 这是算法的时空复杂度的表示.不仅仅用于表示时间复杂度,也用于表示空间复杂度.O后面的括号中有一个函数,指明某个算法的耗时/耗空间与数据增长量之间的关系.其中的n代表输入数据的量. 比如时间复杂度为O(n),就代表数据量增大几倍,耗时也增大几倍.比如常见的遍历算法. 比如时间复杂度O(n^2),就代表数据量增大n倍时,耗时增大n的平方倍,这是比线性更…
java排序算法(四):冒泡排序 冒泡排序是计算机的一种排序方法,它的时间复杂度是o(n^2),虽然不及堆排序.快速排序o(nlogn,底数为2).但是有两个优点 1.编程复杂度很低.很容易写出代码 2.具有稳定性,这里的稳定性是指原序列中相同元素的相对顺序仍然保持到排序后的顺序.而堆排序和快速排序均不具有稳定性 不过一路.二路归并排序和不平衡二叉树排序的速度均比冒泡排序速度快,且具有稳定性,但速度不及堆排序.快速排序.冒泡排序是经过n-1趟子排序完成的,第i趟子排序从第1个数至n-i个数.若第…
java排序算法(二) 二.改进排序算法 2.1希尔排序 定义:希尔排序(ShellSort)是插入排序的一种.也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本.希尔排序是非稳定排序算法. 希尔排序是把记录按下标的一定增量分组,对每组使用直接插入排序算法排序:随着增量逐渐减少,每组包含的关键词越来越多,当增量减至1时,整个文件恰被分成一组,算法便终止. 常用的h序列(增量)由Knuth提出,该序列从1开始,通过如下公式产生:h = 3 * h +1 反过来程序需要反向计算h序列,应该使…
Java排序算法(一) 排序的基本概念和分类 1.1排序的定义 在<大话数据结构>中,排序定义为,假设含有n个记录的序列为{r1,r2,...,rn},其相应的关键字{k1,k2,...,kn},需确定1,2...n的一种排列p1,p2...pn,是其相应的关键字满足Kp1<=Kp2<=...<=Kpn(非递减或非递增)关键,即使得序列称为一个按关键字有序的序列{rp1,rp2...rp3},这样的操作称为排序. 1.2排序的稳定性 假设ki=kj(1<=i<=n…
      之前一篇文章提到BIG O算法复杂度的备忘录, 今天这个是.NET 平台下集合类相关的Big O 算法复杂度   今天先到这儿,希望对您有参考作用, 您可能感兴趣的文章: 数据结构与算法 Big O 备忘录与现实 IT基础架构规划方案一(网络系统规划) 餐饮行业解决方案之客户分析流程 餐饮行业解决方案之采购战略制定与实施流程 餐饮行业解决方案之业务设计流程 供应链需求调研CheckList 企业应用之性能实时度量系统演变 如有想了解更多软件,系统 IT,企业信息化 资讯,请关注我的微…
这篇文章主要介绍了史上最全的java随机数生成算法,我分享一个最全的随机数的生成算法,最代码的找回密码的随机数就是用的这个方法 String password = RandomUtil.generateString(10); 源码如下: package com.javaniu.core.util; import java.util.Random; public class RandomUtil { public static final String ALLCHAR = "0123456789a…
常用Java排序算法 冒泡排序 .选择排序.快速排序 package com.javaee.corejava; public class DataSort { public DataSort() { // TODO Auto-generated constructor stub } public static void main(String[] args) { int[] p = { 34, 21, 54, 18, 23, 76, 38, 98, 45, 33, 27, 51, 11, 20,…
一.使用Java练习算法常常需要使用控制台的数据输入和输出,下面记录一下基本的使用方法: 基本用法 import java.util.*; public class Main { public static void main(String[] args){ Scanner cin = new Scanner(System.in); //常用Scanner类来获取数据 int a = cin.nextInt(); //将输入的数据转换成int型赋给a,输入数据以空格或Tab分隔,Enter执行…
JAVA经典算法40题 [程序1]   题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 1.程序分析:   兔子的规律为数列1,1,2,3,5,8,13,21.... public class exp2{ public static void main(String args[]){ int i=0; for(i=1;i<=20;i++) System.out.println(f(i)); }…
最近因为要准备实习,还有一个蓝桥杯的编程比赛,所以准备加强一下算法这块,然后百度了一下java基础算法,看到的都是那50套题,那就花了差不多三个晚自习的时间吧,大体看了一遍,做了其中的27道题,有一些实在是没啥意思,也就不做了.下面我贴出源码,如果大家嫌复制太麻烦,也可以在此篇下留言或是私信给我邮箱,我会发给你们. 所以题可以参考http://blog.sina.com.cn/s/blog_60fafdda0100wb21.html,我还借鉴了它的函数命名,表示感谢,让我想函数名是最头疼的了.…