- 浏览: 128143 次
- 性别:
- 来自: 北京
最新评论
-
leichenlei:
liuyuanli的微博 写道我试了一下Linux,用SSH成 ...
nodejs远程调试 -
leichenlei:
liuyuanli的微博 写道我试了一下Linux,用SSH成 ...
nodejs远程调试 -
liuyuanli的微博:
我试了一下Linux,用SSH成功了,你是用SSH吗?
nodejs远程调试 -
liuyuanli的微博:
能介绍一下你在Linux上端口映射到方法吗,我想在Linux上 ...
nodejs远程调试 -
leichenlei:
liuyuanli的微博 写道你在文中提到把127.0.0.1 ...
nodejs远程调试
文章列表
android真机调试
- 博客分类:
- android
http://www.apkbus.com/android-44926-1-1.html
基数排序是根据个位、十位......排序的方式,最好可达O(n)。
本例通过余数获得位上数字的方法效率太低。
public static int[] data = {3,7,8,0,9,5,4,1,6,2};
public static void sort(int[] number, int d) {
int k=0;
int n=1;
int m=1;//控制键值排序依据在哪一位
int[][] temp = new int[number.length][number.length];
int[] order = new int[number.l ...
快速排序的原理就是以递归的方式进行划分
划分:从数组中选择一个数作为枢纽,将数组划分成两部分,一部分小于枢纽,一部分大于枢纽
这里列举三种快速排序,第一种是基本的快速排序。第二种优化枢纽选择方式,第三种优化长度较小数组的排序为插入排序。
一、选择最右为中枢的快速排序
步骤:
1,选择最右一个为枢纽。
2,划分整个数组。数组变成:[比枢纽小,...,枢纽,比枢纽大,...]
3,比枢纽小的部分递归1,2。
4,比枢纽大的部分递归1,2。
public static int[] data = {3,7,8,0,9,5,4,1,6,2};
...
最近学到希尔排序,感觉理解非常费劲。下面是自己总结的希尔排序,希望自己以后不要忘了。嘿嘿。希尔排序其实是高级插入排序,所以学习希尔排序之前需要了解插入排序。
一、希尔排序过程:
1,首先根据公式h = h*3 + 1,递归求出h的值;即让h=1,一直递归到h < length结束,得到h。
例如:长度是10的数组,h = 4。
2,公式递减地进行插入排序
for(按公式递减间隔){
//开始插入排序过程
for(从第二个间隔位置;到末尾;+1){ for(从第二个间隔位置;>=0; -=间隔)
}
}
例如:3,7,8,0,9,5,4,1,6,2 ...
排序(2)归并排序(递归、合并排序)
- 博客分类:
- 基础_算法
用到递归、合并,所以叫归并。
public static int[] data = {3,7,8,0,9,5,4,1,6,2};
/**
* 递归
* @param temp 临时数组
* @param sIndex 开始索引
* @param eIndex 结束索引
*/
private static void recursion(int[] temp, int sIndex, int eIndex){
if(sIndex == eIndex){
return ;
}else{
int oneEnd = (sIndex + ...
简单的表达式、公式解析器
- 博客分类:
- 基础_算法
最近在做新项目,需要计算预先配置的表达式的结果。
表达式特点:
1,浮点类型
2,代变量参数
3,只限于简单计算符号
表达式类似于:"3*(4+a)/6"
程序:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
/**
*
* @author chenlei
* @2013-1-16
*/
public class Formu ...
冒泡排序
public static int[] data = {3,7,8,0,9,5,4,1,6,2};
public static void main(String[] args) {
int len = data.length;
System.out.println(Arrays.toString(data));
for(int i = 0; i < len - 1; i++){
for(int j = i + 1; j < len; j++){
if(data[i] > data[j]){
swap ...
android指南-1应用组件-基本原理
- 博客分类:
- android
基础
一个安卓应用有一个不同linux用户和用户id,应用的所有文件都只有这个用户可以访问。
一个安卓应用有一个虚拟机实例(一个进程)。
可以两个应用使用一个用户,也可以两个应用运行在一个进程。
所有应用可以访问硬件资源,但是必须在安装时被需求。
四大组件
Activities活动:一个界面。
services服务:一个后台组件
content providers内容提供者:和存储有关
broadcast receivers广播接受者:一般是接收、处理系统的广播
调用startActivity或者startActivityForResult(),传递一 ...
1,activity貌似是一个显示页的东西。
打开软件第一个activity(main activity)在AndroidManifest.xml中这样写:
<activity android:name=".MainActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
< ...
java集合框架(1、集合介绍)
- 博客分类:
- java
一个集合
-
也叫容器
-
是将多个元素组装成一个单元的简单对象。集合被用来存储、检索、操纵、传送多个数据。尤其是,它用自然组表示数据集合,像一副扑克牌、一个邮件夹、一个电话薄。
1.1
什么是集合框架
集合框架是表示集合和操纵集合的统一结构。所有的集合框架包含:
接口
:代表集合的抽象数据类型。接口允许集合有统一的操作,而不用考虑细节。在面向对象语言中,通常用接口形成层次结构。
实现
:接口的具体实现。本质上,也是可重用的数据结构。
算法
:实现了集合接口的对象的、例如,搜索和排序等执行有效计算的方法。算法是多态的: ...
java并发(七、高级并发对象)
- 博客分类:
- java
到目前,这课程从一开就集中在java
平台的部分低级API
。这些API
适合于适合于非常基础的任务,但是高级构建需要更高级的任务。特别是在今天充分利用多核心系统上的并发应用。
在这一章,我们将考虑5.0
版本的java
平台引进的一些高级并发特点的。大多数特性是在java.util.concurrent
包下实现的。在Java
集合框架中也有新的并发数据结构。
l
Lock
对象支持的锁方案简化了并发应用。
l
Executors
定义了一个创建和管理线程的高级API
。Executor
实现在java.util.concu ...
java并发(六、不可变对象)
- 博客分类:
- java
如果一个对象在构造之后不可改变,那么这个对象就是不可变对象。不可变对象被广泛认同的作用是建立简单、可靠代码的万全之策。
不可变对象在并发应用程序中特别有用,因为他们不能被修改,他们不能发生线程冲突 ...
java并发(五、保护块)
- 博客分类:
- java
线程必须经常协调他们的活动。最普通的协调方法是保护块(guarded block)。以循环条件开始的代码块必须在循环条件为真时代码块才能够执行。为了正确操作有许多步骤需要遵守。
假设,比如 guardedJoy方法直到共享变量joy被另一个线程修改才会执行。理论上,这个方法一直在循环直到满足条件,但是这个循环很浪费,因为它在等待的时候不停的在运行。
public void guardedJoy() {
// Simple loop guard. Wastes
// processor time. Don't do this!
while(!joy) {}
System.out.pri ...
java并发(四、活性)
- 博客分类:
- java
四、活性
(一) 死锁
一个并发应用的即使执行能力叫做它的活性。这章描述了很多一般类型的活性问题,死锁,然后简单的描述了另两个问题,饥饿和活锁。
死锁就是俩个或多个线程互相等待造成永远被阻塞的状况。这里有一 ...
java并发(三、同步)
- 博客分类:
- java
三、同步
线程通信首先通过共同访问一个字段、对象的字段。这种形式的通信是非常有效的。但是会产生两种错误:线程冲突和内存一致性错误。需要用Synchronization工具避免这些错误。
l 线程冲突:描述了当多个线程访问共 ...