java排序算法汇总
这段时间正在找工作,研究了一下算法。我是做web开发的,但是比较喜欢算法的,所以就总结了一下,觉得仍有很多不足,请大家多多指教。如果有合适的工作也挺推荐推荐的。我做开发已经三年了。我的邮箱:zlljsf@gmail.com
排序算法超类:
/**
* 排序算法超类
* 所有排序序列中元素必须实现java.lang.Comparable接口
* @author Liangliang Zhang
*
* @param <E>
*/
public abstract class Sort<E extends Comparable<E>> {
/**
* 排序类中均要实现的排序方法
* @param array 排序序列
* @param from 排序序列开始位置
* @param len 排序序列长度
*/
public abstract void sort(E[] array, int from, int len);
public final void sort(E[] array){
sort(array, 0, array.length);
}
/**
* 经典调换
* @param array
* @param from
* @param to
*/
protected final void swap(E[] array, int from, int to){
E temp = array[from];
array[from] = array[to];
array[to] = temp;
}
}
折半插入排序:
/**
* 算法名称:折半插入排序(Binary Insert Sort)
* 折半插入排序的核心思想是:1、找出插入位置在低半区还是高半区,以顺序为例,假如
* 序列有8个元素,则是找出插入位置是前四个还是后四个而非全部
* 2、找到插入位置后,顺序移动,前提前面元素是有序的
* @author Liangliang Zhang
*
*/
public class BinaryInsertSort<E extends Comparable<E>> extends Sort<E>{
@Override
public void sort(E[] array, int from, int len) {
for(int i = from + 1; i < len; i++){
E temp = array[i];
int low = from + 1;
int high = i - from + 1;
while(low <= high){
int mid = (high + low)/2;
if(temp.compareTo(array[mid]) < 0){
high = mid -1;
}else{
low = mid + 1;
}
}
int j = i - 1;
//这样移动保持序列一直是有序的
for(; j >= high && temp.compareTo(array[j]) == -1; j--){
array[j + 1] = array[j];
}
array[j + 1] = temp;//抵充j--
}
}
}
希尔排序:
import java.util.ArrayList;
import java.util.List;
/**
* 算法名称:希尔排序(Shell's Sort
相关文档:
先贴一段
Java
基本结构
Java
结构包括四个不同而又相关的部分:
Java
语言、
class
文件格式、应用程序接
口、虚拟机
其中,虚拟机的主要任务是在程序运行中需要的时候调用
class
文件并执行其中的字节码。一个
Java
应
用有两种
class loader
:
the system class loader
和
class loader objects
......
一、什么是Java事务
通常的观念认为,事务仅与数据库相关。
事务必须服从ISO/IEC所制定的ACID原则。ACID是原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)的缩写。事务的原子性表示事务执行过程中的任何失败都将导致事务所做的任何修改失效。一致性表示当事务执行失败 ......
一 线程的基本概念
线程是一个程序内部的顺序控制流.一个进程相当于一个任务,一个线程相当于一个任务中的一条执行路径.;多进程:在操作系统中能同时运行多个任务(程序);多线程:在同一个应用程序中有多个顺序流同时执行;Java的线程是通过java.lang.Thread类来实现的;JVM启动时会有一个由主方法(public static void main( ......
/*
Function name: myGetHttpFile2
Description: 爬网页用
Input: URL 例如:http://www.126.com
Output: 字符串,网页的HTML
*/
public String myGetHttpFile2(String url){
String authentication=null;
ArrayList al=new ArrayList();
String PageURL = url;
......
ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能含有“空隙”,当数组大小不满足时需要增加存储能力,就要将已有数组数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动,代价比较高。因此, ......