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;ifor(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
- */
- publicclassBubbleSortimplementsSortUtil.Sort
- {
- /*(non-Javadoc)
- *@seeorg.rut.util.algorithm.SortUtil.Sort#sort(int[])
- */
- publicvoidsort(int[]data)
- {
- inttemp;
- for(inti=0;ifor(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<data.length;i++)
- {
- intlowIndex=i;
- for(intj=data.length-1;j>i;j--)
- {
- if(data[j]<data[lowIndex])
- {
- 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;jinsertSort(data,j,i);
- }
- }
- insertSort(data,0,1);
- }
- /**
- *@paramdata
- *@paramj
- *@parami
- */
- privatevoidinsertSort(int[]data,intstart,intinc)
- {
- inttemp;
- for(inti=start+inc;ifor(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(lSortUtil.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(lSortUtil.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;ifor(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<b)
- {
- 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;ifor(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;ih.remove();
- System.arraycopy(h.queue,1,data,0,data.length);
- }
- privatestaticclassMaxHeap
- {
- voidinit(int[]data)
- {
- this.queue=newint[data.length+1];
- for(inti=0;iqueue[++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<size&&queue[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;
- }
- }
相关推荐
java排序大全(含各种常用得排序算法),学习排序不错得资料
Java 中的一些重要排序,比如冒泡,直接插入排序
JAVA排序大全 冒泡 快速 选择 归并排序
java排序算法大全 为了便于管理,先引入个基础类: 一 插入排序 二 冒泡排序 三,选择排序 四 Shell排序 五 快速排序 六 归并排序 等等
java排序大全.pdf
java排序大全[借鉴].pdf
java排序大全[参考].pdf
java排序大全,堆、快速、插入、冒泡、选择...java排序大全,堆、快速、插入、冒泡、选择...java排序大全,堆、快速、插入、冒泡、选择...
java的排序大全,排序算法的分类如下: * 1.插入排序(直接插入排序、折半插入排序、希尔排序); * 2.交换排序(冒泡泡排序、快速排序); * 3.选择排序(直接选择排序、堆排序); * 4.归并排序; * 5.基数...
java排序 java 排序 排序大全 算法 java算法
JAVA排序汇总JAVA排序汇总JAVA排序汇总
Java排序方法详解大全 Java排序 快速排序 冒泡排序
Java所有排序算法大全 Java所有排序算法大全 Java所有排序算法大全 Java所有排序算法大全
java排序.txt
NULL 博文链接:https://sky840505.iteye.com/blog/375622
国外牛人的排序算法,内容丰富,适合初学者,爱挑战脑力的童鞋。