文章探索:   分类:    关键字:  
  + 栏目导航
  + 相关文章
document 对象
Window.Open详解
JS replace 方法
JScript 属性
JScript 对象
JScript 方法
关于window.opener的用法
JavaScript语法——style.display 属..
不被拦截的弹出窗口代码
showModalDialog和showModelessDialog..
showModelessDialog()使用详解
IE中非模式对话框(showModelessDialog..
JS eval()函数
Preferences 指南
JS中的setTimeout和setInterval的区别
JavaScript对象与数组参考大全
javascript动态增加、删除、填充表格..
用Java实现几种常见的排序算法
JavaScript 日期函数
JavaScript 使用字符串函数
如何用Javascript获得TextArea中的光..
Document 对象方法
在input中只能输入数字
selection.createRange() 用法例子
获取网页各种宽高的值
JavaScript方法 - indexOf方法
substring函数详解
40种网页常用小技巧(javascript)
event.X和event.clientX有什么区别
clientX, clientY,offsetX, offsetY,..


技术教程 -> JavaScript教程 ->  
用Java实现几种常见的排序算法
来源:转载   人气:1886   录入时间:2007-11-8
     用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
   插入排序:
   
   package org.rut.util.algorithm.support;
   
   import org.rut.util.algorithm.SortUtil;
   /**
    * @author treeroot
    * @since 2006-2-2
    * @version 1.0
    */
   public class InsertSort implements SortUtil.Sort{
   
    /* (non-Javadoc)
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
    */
    public void sort(int[] data) {
    int temp;
    for(int i=1;i<data.length;i++){
    for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
    SortUtil.swap(data,j,j-1);
    }
    }
    }
   
   }
   
   冒泡排序:
   
   package org.rut.util.algorithm.support;
   
   import org.rut.util.algorithm.SortUtil;
   
   /**
    * @author treeroot
    * @since 2006-2-2
    * @version 1.0
    */
   public class BubbleSort implements SortUtil.Sort{
   
    /* (non-Javadoc)
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
    */
    public void sort(int[] data) {
    int temp;
    for(int i=0;i<data.length;i++){
    for(int j=data.length-1;j>i;j--){
    if(data[j]<data[j-1]){
    SortUtil.swap(data,j,j-1);
    }
    }
    }
    }
   
   }
   
   
   
   
   用Java语言实现的各种排序,包括插入排序、冒泡排序、选择排序、Shell排序、快速排序、归并排序、堆排序、SortUtil等。
   插入排序:
   
   package org.rut.util.algorithm.support;
   
   import org.rut.util.algorithm.SortUtil;
   /**
    * @author treeroot
    * @since 2006-2-2
    * @version 1.0
    */
   public class InsertSort implements SortUtil.Sort{
   
    /* (non-Javadoc)
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
    */
    public void sort(int[] data) {
    int temp;
    for(int i=1;i<data.length;i++){
    for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
    SortUtil.swap(data,j,j-1);
    }
    }
    }
   
   }
   
   冒泡排序:
   
   package org.rut.util.algorithm.support;
   
   import org.rut.util.algorithm.SortUtil;
   
   /**
    * @author treeroot
    * @since 2006-2-2
    * @version 1.0
    */
   public class BubbleSort implements SortUtil.Sort{
   
    /* (non-Javadoc)
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
    */
    public void sort(int[] data) {
    int temp;
    for(int i=0;i<data.length;i++){
    for(int j=data.length-1;j>i;j--){
    if(data[j]<data[j-1]){
    SortUtil.swap(data,j,j-1);
    }
    }
    }
    }
   
   }
   
   
   
   
   快速排序:
   
   package org.rut.util.algorithm.support;
   
   import org.rut.util.algorithm.SortUtil;
   
   /**
    * @author treeroot
    * @since 2006-2-2
    * @version 1.0
    */
   public class QuickSort implements SortUtil.Sort{
   
    /* (non-Javadoc)
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
    */
    public void sort(int[] data) {
    quickSort(data,0,data.length-1);
    }
    private void quickSort(int[] data,int i,int j){
    int pivotIndex=(i+j)/2;
    //swap
    SortUtil.swap(data,pivotIndex,j);
   
    int k=partition(data,i-1,j,data[j]);
    SortUtil.swap(data,k,j);
    if((k-i)>1) quickSort(data,i,k-1);
    if((j-k)>1) quickSort(data,k+1,j);
   
    }
    /**
    * @param data
    * @param i
    * @param j
    * @return
    */
    private int partition(int[] data, int l, int r,int pivot) {
    do{
    while(data[++l]<pivot);
    while((r!=0)&&data[--r]>pivot);
    SortUtil.swap(data,l,r);
    }
    while(l<r);
    SortUtil.swap(data,l,r);
    return l;
    }
   
   }
   
   改进后的快速排序:
   
   package org.rut.util.algorithm.support;
   
   import org.rut.util.algorithm.SortUtil;
   
   /**
    * @author treeroot
    * @since 2006-2-2
    * @version 1.0
    */
   public class ImprovedQuickSort implements SortUtil.Sort {
   
    private static int MAX_STACK_SIZE=4096;
    private static int THRESHOLD=10;
    /* (non-Javadoc)
    * @see org.rut.util.algorithm.SortUtil.Sort#sort(int[])
    */
    public void sort(int[] data) {
    int[] stack=new int[MAX_STACK_SIZE];
   
    int top=-1;
    int pivot;
    int pivotIndex,l,r;
   
    stack[++top]=0;
    stack[++top]=data.length-1;
   
    while(top>0){
    int j=stack[top--];
    int i=stack[top--];
   
    pivotIndex=(i+j)/2;
    pivot=data[pivotIndex];
   
    SortUtil.swap(data,pivotIndex,j);
   
    //partition
    l=i-1;
    r=j;
    do{
    while(data[++l]<pivot);
    while((r!=0)&&(data[--r]>pivot));
    SortUtil.swap(data,l,r);
    }
    while(l<r);
    SortUtil.swap(data,l,r);
    SortUtil.swap(data,l,j);
   
    if((l-i)>THRESHOLD){
    stack[++top]=i;
    stack[++top]=l-1;
    }
    if((j-l)>THRESHOLD){
    stack[++top]=l+1;
    stack[++top]=j;
    }
   
    }
    //new InsertSort().sort(data);
    insertSort(data);
    }
    /**
    * @param data
    */
    private void insertSort(int[] data) {
    int temp;
    for(int i=1;i<data.length;i++){
    for(int j=i;(j>0)&&(data[j]<data[j-1]);j--){
    SortUtil.swap(data,j,j-1);
    }
    }
    }
   }




Copyright(C)2007-2024 广州市佳沛数码科技有限公司 版权所有
公司地址: 广州市荔湾区东漖北路560号511室
电话:020-81803473 传真:020-81544987