首  页
站长信箱
868搜索
网站登录
免费计数器
免费留言本
IP来源查询
网站技术教程
网站流量统计
文章探索:   分类:    关键字:  
    什么?你还在找兼职?上兼客吧,现在兼客吧平台太火了,知名度和诚信度也很高,注册就送0.5元现金,满3元就能提现,马上到账了!最低3元就能提现,大家可以注册下试试!注册地址:http://www.jiankeba.com/computeryc1688
  + 栏目导航
  + 相关文章
window.open参数详解
如何让标题栏文字循环变化
document 对象
Window.Open详解
JS replace 方法
JScript 属性
JScript 对象
JScript 方法
关于window.opener的用法
JavaScript语法——style.displ..
不被拦截的弹出窗口代码
showModalDialog和showModeless..
showModelessDialog()使用详解
IE中非模式对话框(showModeless..
JS eval()函数
Preferences 指南
JS中的setTimeout和setInterval..
JavaScript对象与数组参考大全
javascript动态增加、删除、填..
用Java实现几种常见的排序算法
JavaScript 日期函数
JavaScript 使用字符串函数
如何用Javascript获得TextArea..
Document 对象方法
在input中只能输入数字
selection.createRange() 用法..
获取网页各种宽高的值
JavaScript方法 - indexOf方法
substring函数详解
40种网页常用小技巧(javascript..

技术教程 -> JavaScript教程 ->  
用Java实现几种常见的排序算法
来源:转载   人气:4509   录入时间:2006/9/15


     用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);
    }
    }
    }
   }



| 网站转让 | 站长信箱 | 网站登录 | 技术教程 | 免费计数器 | 免费留言本 | 868流量统计 | 好帮手网站营销 |
地址:广东省阳江市  联系电话:13725641179 杨先生
Copyright 2004-2019 868资源网- 版权所有    粤ICP备05007330号