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
......
import java.awt.image. * ;
import com.sun.image.codec.jpeg. * ;
public class poiReadDoc {
Image img = null;
int width = 0,height =0;
String destFile = "";
public void readImg(String fileName) throws IOException{
File _fil ......
ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能含有“空隙”,当数组大小不满足时需要增加存储能力,就要将已有数组数据复制到新的存储空间中。当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制、移动,代价比较高。因此, ......
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
System.out.println(sdf.format(date));
SimpleDateFormat sdf2 = new SimpleDateFormat("MM");
System.out.println(sdf2.format(date));
Calendar c = Calendar.getInstance();
System.out.println(c.get(C ......