已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国邮政储蓄银行重庆分行校园招聘备考题库附答案详解
- 2025徽银理财社会招聘备考题库及答案详解(典优)
- 2025年湖南高速铁路职业技术学院招聘25人备考题库含答案解析(必刷)
- 2026中国农业银行山东省分行校园招聘1209人备考题库附答案详解(基础题)
- 2025浙江宁波余姚市阳明街道办事处招聘编外工作人员1人备考题库及一套参考答案详解
- 2025年安阳县面向中小学教师选调乡镇所属事业单位工作人员50名(公共基础知识)综合能力测试题附答案解析
- 2025年甘肃省张掖市培黎职业学院招聘非事业编制工作人员14人(公共基础知识)综合能力测试题附答案解析
- 2026年抚顺职业技术学院单招职业倾向性测试题库附答案
- 国家粮食和物资储备局垂直管理局事业单位2026年应届毕业生公开招聘【27人】(公共基础知识)综合能力测试题附答案解析
- 2025年宁波北仑区郭巨街道招聘编外人员3人备考题库及答案详解(有一套)
- 水利副高级工程师答辩题库
- 数字光纤传感器FS-N10系列用户手册
- 餐饮连锁稽核管理制度
- 护师个人述职报告
- 化工厂冬季四防培训课件
- 普通密码设备应急预案
- 危重孕产妇评审制度
- 太乙课堂游戏最终版
- 3.2环境污染与国家安全课件-高中地理人教版(2019)选择性必修3
- 部编版道德与法制六年级上册全册教案(表格教学设计)
- 高标准农田建设项目施工合同
评论
0/150
提交评论