《java排序方法.doc》由会员分享,可在线阅读,更多相关《java排序方法.doc(13页珍藏版)》请在金锄头文库上搜索。
1、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.Sor
2、tUtil.Sort#sort(int)*/public void sort(int data) int temp;for(int i=1;i0)&(datajdataj-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/
3、* (non-Javadoc)* see org.rut.util.algorithm.SortUtil.Sort#sort(int)*/public void sort(int data) int temp;for(int i=0;ii;j-)if(dataj1) 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+lp
4、ivot);SortUtil.swap(data,l,r);while(l0)int j=stacktop-;int i=stacktop-;pivotIndex=(i+j)/2;pivot=datapivotIndex;SortUtil.swap(data,pivotIndex,j);/partitionl=i-1;r=j;dowhile(data+lpivot);SortUtil.swap(data,l,r);while(lTHRESHOLD)stack+top=i;stack+top=l-1;if(j-l)THRESHOLD)stack+top=l+1;stack+top=j;/new
5、InsertSort().sort(data);insertSort(data);/* param data*/private void insertSort(int data) int temp;for(int i=1;i0)&(datajdataj-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 c
6、lass 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
7、,temp,l,mid);mergeSort(data,temp,mid+1,r);for(int i=l;i=r;i+)tempi=datai;int i1=l;int i2=mid+1;for(int cur=l;curr)datacur=tempi1+;else if(tempi1= 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+) tempi = datai;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 b)