Java中各种排序算法.docx

上传人:b****4 文档编号:5191516 上传时间:2022-12-13 格式:DOCX 页数:15 大小:16.51KB
下载 相关 举报
Java中各种排序算法.docx_第1页
第1页 / 共15页
Java中各种排序算法.docx_第2页
第2页 / 共15页
Java中各种排序算法.docx_第3页
第3页 / 共15页
Java中各种排序算法.docx_第4页
第4页 / 共15页
Java中各种排序算法.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

Java中各种排序算法.docx

《Java中各种排序算法.docx》由会员分享,可在线阅读,更多相关《Java中各种排序算法.docx(15页珍藏版)》请在冰豆网上搜索。

Java中各种排序算法.docx

Java中各种排序算法

//插入排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassInsertSortimplementsSortUtil.Sort{

/**(non-Javadoc)

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

inttemp;

for(inti=1;i

for(intj=i;(j>0)&&(data[j]

SortUtil.swap(data,j,j-1);

}

}

}

}

//冒泡排序:

 

for(vari=0;i

for(varj=i+1;j<=arr.length-1;j++){

if(eval(arr[i])

temp=arr[i];

arr[i]=arr[j];

arr[j]=temp;

}

}

}

 

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassBubbleSortimplementsSortUtil.Sort{

/**(non-Javadoc)

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

inttemp;

for(inti=0;i

for(intj=data.length-1;j>i;j--){

if(data[j]

SortUtil.swap(data,j,j-1);

}

}

}

}

}

//选择排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassSelectionSortimplementsSortUtil.Sort{

/**

*(non-Javadoc)

*

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

inttemp;

for(inti=0;i

intlowIndex=i;

for(intj=data.length-1;j>i;j--){

if(data[j]

lowIndex=j;

}

}

SortUtil.swap(data,i,lowIndex);

}

}

}

//Shell排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassShellSortimplementsSortUtil.Sort{

/**(non-Javadoc)

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

for(inti=data.length/2;i>2;i/=2){

for(intj=0;j

insertSort(data,j,i);

}

}

insertSort(data,0,1);

}

/**

*@paramdata

*@paramj

*@parami

*/

privatevoidinsertSort(int[]data,intstart,intinc){

inttemp;

for(inti=start+inc;i

for(intj=i;(j>=inc)&&(data[j]

SortUtil.swap(data,j,j-inc);

}

}

}

}

//快速排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassQuickSortimplementsSortUtil.Sort{

/**(non-Javadoc)

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

quickSort(data,0,data.length-1);

}

privatevoidquickSort(int[]data,inti,intj){

intpivotIndex=(i+j)/2;

//swap

SortUtil.swap(data,pivotIndex,j);

intk=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);

}

/**

*@paramdata

*@parami

*@paramj

*@return

*/

privateintpartition(int[]data,intl,intr,intpivot){

do{

while(data[++l]

while((r!

=0)&&data[--r]>pivot);

SortUtil.swap(data,l,r);

}

while(l

SortUtil.swap(data,l,r);

returnl;

}

}

//改进后的快速排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassImprovedQuickSortimplementsSortUtil.Sort{

privatestaticintMAX_STACK_SIZE=4096;

privatestaticintTHRESHOLD=10;

/**(non-Javadoc)

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

int[]stack=newint[MAX_STACK_SIZE];

inttop=-1;

intpivot;

intpivotIndex,l,r;

stack[++top]=0;

stack[++top]=data.length-1;

while(top>0){

intj=stack[top--];

inti=stack[top--];

pivotIndex=(i+j)/2;

pivot=data[pivotIndex];

SortUtil.swap(data,pivotIndex,j);

//partition

l=i-1;

r=j;

do{

while(data[++l]

while((r!

=0)&&(data[--r]>pivot));

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;

}

}

//newInsertSort().sort(data);

insertSort(data);

}

/**

*@paramdata

*/

privatevoidinsertSort(int[]data){

inttemp;

for(inti=1;i

for(intj=i;(j>0)&&(data[j]

SortUtil.swap(data,j,j-1);

}

}

}

}

//归并排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassMergeSortimplementsSortUtil.Sort{

/**(non-Javadoc)

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

int[]temp=newint[data.length];

mergeSort(data,temp,0,data.length-1);

}

privatevoidmergeSort(int[]data,int[]temp,intl,intr){

intmid=(l+r)/2;

if(l==r)return;

mergeSort(data,temp,l,mid);

mergeSort(data,temp,mid+1,r);

for(inti=l;i<=r;i++){

temp[i]=data[i];

}

inti1=l;

inti2=mid+1;

for(intcur=l;cur<=r;cur++){

if(i1==mid+1)

data[cur]=temp[i2++];

elseif(i2>r)

data[cur]=temp[i1++];

elseif(temp[i1]

data[cur]=temp[i1++];

else

data[cur]=temp[i2++];

}

}

}

//改进后的归并排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassImprovedMergeSortimplementsSortUtil.Sort{

privatestaticfinalintTHRESHOLD=10;

/**

*(non-Javadoc)

*

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

int[]temp=newint[data.length];

mergeSort(data,temp,0,data.length-1);

}

privatevoidmergeSort(int[]data,int[]temp,intl,intr){

inti,j,k;

intmid=(l+r)/2;

if(l==r)

return;

if((mid-l)>=THRESHOLD)

mergeSort(data,temp,l,mid);

else

insertSort(data,l,mid-l+1);

if((r-mid)>THRESHOLD)

mergeSort(data,temp,mid+1,r);

else

insertSort(data,mid+1,r-mid);

for(i=l;i<=mid;i++){

temp[i]=data[i];

}

for(j=1;j<=r-mid;j++){

temp[r-j+1]=data[j+mid];

}

inta=temp[l];

intb=temp[r];

for(i=l,j=r,k=l;k<=r;k++){

if(a

data[k]=temp[i++];

a=temp[i];

}else{

data[k]=temp[j--];

b=temp[j];

}

}

}

/**

*@paramdata

*@paraml

*@parami

*/

privatevoidinsertSort(int[]data,intstart,intlen){

for(inti=start+1;i

for(intj=i;(j>start)&&data[j]

SortUtil.swap(data,j,j-1);

}

}

}

}

//堆排序:

packageorg.rut.util.algorithm.support;

importorg.rut.util.algorithm.SortUtil;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassHeapSortimplementsSortUtil.Sort{

/**(non-Javadoc)

*@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])

*/

publicvoidsort(int[]data){

MaxHeaph=newMaxHeap();

h.init(data);

for(inti=0;i

h.remove();

System.arraycopy(h.queue,1,data,0,data.length);

}

 

privatestaticclassMaxHeap{

voidinit(int[]data){

this.queue=newint[data.length+1];

for(inti=0;i

queue[++size]=data[i];

fixUp(size);

}

}

privateintsize=0;

privateint[]queue;

publicintget(){

returnqueue[1];

}

publicvoidremove(){

SortUtil.swap(queue,1,size--);

fixDown

(1);

}

//fixdown

privatevoidfixDown(intk){

intj;

while((j=k<<1)<=size){

if(j

j++;

if(queue[k]>queue[j])//不用交换

break;

SortUtil.swap(queue,j,k);

k=j;

}

}

privatevoidfixUp(intk){

while(k>1){

intj=k>>1;

if(queue[j]>queue[k])

break;

SortUtil.swap(queue,j,k);

k=j;

}

}

}

}

//SortUtil:

packageorg.rut.util.algorithm;

importorg.rut.util.algorithm.support.BubbleSort;

importorg.rut.util.algorithm.support.HeapSort;

importorg.rut.util.algorithm.support.ImprovedMergeSort;

importorg.rut.util.algorithm.support.ImprovedQuickSort;

importorg.rut.util.algorithm.support.InsertSort;

importorg.rut.util.algorithm.support.MergeSort;

importorg.rut.util.algorithm.support.QuickSort;

importorg.rut.util.algorithm.support.SelectionSort;

importorg.rut.util.algorithm.support.ShellSort;

/**

*@authortreeroot

*@since2006-2-2

*@version1.0

*/

publicclassSortUtil{

publicfinalstaticintINSERT=1;

publicfinalstaticintBUBBLE=2;

publicfinalstaticintSELECTION=3;

publicfinalstaticintSHELL=4;

publicfinalstaticintQUICK=5;

publicfinalstaticintIMPROVED_QUICK=6;

publicfinalstaticintMERGE=7;

publicfinalstaticintIMPROVED_MERGE=8;

publicfinalstaticintHEAP=9;

publicstaticvoidsort(int[]data){

sort(data,IMPROVED_QUICK);

}

privatestaticString[]name={

"insert","bubble","selection","shell","quick","improved_quick","merge","improved_merge","heap"

};

privatestaticSort[]impl=newSort[]{

newInsertSort(),

newBubbleSort(),

newSelectionSort(),

newShellSort(),

newQuickSort(),

newImprovedQuickSort(),

newMergeSort(),

newImprovedMergeSort(),

newHeapSort()

};

publicstaticStringtoString(intalgorithm){

returnname[algorithm-1];

}

publicstaticvoidsort(int[]data,intalgorithm){

impl[algorithm-1].sort(data);

}

publicstaticinterfaceSort{

publicvoidsort(int[]data);

}

publicstaticvoidswap(int[]data,inti,intj){

inttemp=data[i];

data[i]=data[j];

data[j]=temp;

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1