




已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
java的几种排序方式用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 for(int j=i;(j0)&(dataj 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 for(int j=data.length-1;ji;j-)if(dataj 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 SelectionSort 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 i; j-) if (dataj 2;i/=2)for(int j=0;j insertSort(data,j,i);insertSort(data,0,1);/* param data* param j* param i*/private void insertSort(int data, int start, int inc) int temp;for(int i=start+inc;i for(int j=i;(j=inc)&(dataj SortUtil.swap(data,j,j-inc);快速排序: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;/swapSortUtil.swap(data,pivotIndex,j);int k=partition(data,i-1,j,dataj);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) dowhile(data+l while(r!=0)&data-rpivot);SortUtil.swap(data,l,r);while(l 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 intMAX_STACK_SIZE;int top=-1;int pivot;int pivotIndex,l,r;stack+top=0;stack+top=data.length-1;while(top0)int j=stacktop-;int i=stacktop-;pivotIndex=(i+j)/2;pivot=datapivotIndex;SortUtil.swap(data,pivotIndex,j);/partitionl=i-1;r=j;dowhile(data+l while(r!=0)&(data-rpivot);SortUtil.swap(data,l,r);while(l 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 for(int j=i;(j0)&(dataj 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 MergeSort implements SortUtil.Sort/* (non-Javadoc)* see org.rut.util.algorithm.SortUtil.Sort#sort(int)*/public void sort(int data) int temp=new intdata.length;mergeSort(data,temp,0,data.length-1);private void mergeSort(int data,int temp,int l,int r)int mid=(l+r)/2;if(l=r) return ;mergeSort(data,temp,l,mid);mergeSort(data,temp,mid+1,r);for(int i=l;i=r;i+)temp=data;int i1=l;int i2=mid+1;for(int cur=l;curr)datacur=tempi1+;else if(tempi1 datacur=tempi1+;elsedatacur=tempi2+; 改进后的归并排序:package org.rut.util.algorithm.support;import org.rut.util.algorithm.SortUtil;/* author treeroot* since 2006-2-2* version 1.0*/public class ImprovedMergeSort implements SortUtil.Sort private static final int THRESHOLD = 10;/* (non-Javadoc)* * see org.rut.util.algorithm.SortUtil.Sort#sort(int)*/public void sort(int data) int temp=new intdata.length;mergeSort(data,temp,0,data.length-1);private void mergeSort(int data, int temp, int l, int r) int i, j, k;int mid = (l + r) / 2;if (l = r)return;if (mid - l) = THRESHOLD)mergeSort(data, temp, l, mid);elseinsertSort(data, l, mid - l + 1);if (r - mid) THRESHOLD)mergeSort(data, temp, mid + 1, r);elseinsertSort(data, mid + 1, r - mid);for (i = l; i = mid; i+) temp = data;for (j = 1; j = r - mid; j+) tempr - j + 1 = dataj + mid;int a = templ;int b = tempr;for (i = l, j = r, k = l; k = r; k+) if (a start) & dataj 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 HeapSort implements SortUtil.Sort/* (non-Javadoc)* see org.rut.util.algorithm.SortUtil.Sort#sort(int)*/public void sort(int data) MaxHeap h=new MaxHeap();h.init(data);for(int i=0;i h.remove();System.arraycopy(h.queue,1,data,0,data.length);private static class MaxHeap void init(int data)this.queue=new intdata.length+1;for(int i=0;i queue+size=data;fixUp(size);private int size=0;private int queue;public int get() return queue1;public void remove() SortUtil.swap(queue,1,size-);fixDown(1);/fixdownprivate void fixDown(int k) int j;while (j = k 1) = size) if (j queuej) /不用交换break;SortUtil.swap(queue,j,k);k = j;private void fixUp(int k) while (k 1) int j = k 1;if (queuejqueuek)break;SortUtil.swap(queue,j,k);k = j;SortUtil:package org.rut.util.algorithm;import org.rut.util.algorithm.support.BubbleSort;import org.rut.util.algorithm.support.HeapSort;import org.rut.util.algorithm.support.ImprovedMergeSort;import org.rut.util.algorithm.support.ImprovedQuickSort;import org.rut.util.algorithm.support.InsertSort;import org.rut.util.algorithm.support.MergeSort;import org.rut.util.algorithm.support.QuickSort;import org.rut.util.algorithm.support.SelectionSort;import org.rut.util.algorithm.support.ShellSort;/* author treeroot* since 2006-2-2* version 1.0*/public class SortUtil public final static int INSERT = 1;public final static int BUBBLE = 2;public final static int SELECTION = 3;public final static int SHELL = 4;public final static int QUICK = 5;public final static int IMPROVED_QUICK = 6;public final static int MERGE = 7;public final static int IMPROVED_MER
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工业自动化技术的进步及产业应用
- 工业设计与产品市场定位的协同发展
- 工业设计与产品创新的关系
- 工作中的创新思维方法与应用
- 工作与生活平衡的实践与思考
- 工作报告撰写技巧与规范
- 工程机械设计的绿色化及可持续性研究
- 工程机械动载控制系统的设计与实践
- 工程项目中信息化监理服务模式创新
- 工程机机制造的现代化技术趋势
- 软件正版化培训
- 先兆流产课件-课件
- 医院培训课件:《静脉导管维护专家共识》
- DB43T 1173-2016 钢-超高韧性混凝土轻型组合结构桥面技术规范
- 三维网客土喷播植草护坡方案
- 白酒经销商与酒店合作协议书模板
- 《积极心理学(第3版)》 课件 第4章 乐观
- 户外广告牌施工方案
- 国家开放大学本科《商务英语4》一平台机考真题及答案(第三套)
- YYT 0698.5-2009 最终灭菌医疗器械包装材料 第5部分:透气材料与塑料膜组成的可密封组合袋和卷材 要求和试验方法
- 糖尿病家庭医生:签约讲座计划
评论
0/150
提交评论