simohayha 发表于 2013-1-27 06:25:02

各种排序算法的java实现

很早以前学算法的时候写的 ^_^。
1. BubbleSort
import java.util.*;public class BubbleSort{public void sort(int[] a){for(int i=0;ifor(int j=a.length-1;j>=i+1;j--){if(aint tmp =a;a=a;a=tmp;}}}}public static void main(String[] args){int[] a = {1,6,3,8,1,56,};BubbleSort bs = new BubbleSort();bs.sort(a);System.out.println(Arrays.toString(a));}}2 InsertSortimport java.util.*;public class InsertSort{private int i=0;public void sort(int[] a){for(int j=1;jint keys = a;i =j-1;while(i>=0&&a>keys){a=a;i--;}a=keys;}}public static void main(String[] args){InsertSort i = new InsertSort();int[] f={5,2,4,6,1,3,0};i.sort(f);System.out.println(Arrays.toString(f));}}3 MergeSortimport java.util.*;public class MergeSortTest{private int[] l,r1;public void merge(int[] a,int p,int q,int r){int n1 =q-p+1;int n2 = r-q;l=new int;r1 = new int;for(int i=0;il=a;}l=Integer.MAX_VALUE;for(int i=0;ir1=a;}r1 =Integer.MAX_VALUE;int i=0;int j=0;for(int k=p;kif(l<=r1){a=l;i=i+1;}else{a=r1;j=j+1;}}}public void mergeSort(int[] a,int p,int r){if(p+1int q=(p+r)/2;mergeSort(a,p,q);mergeSort(a,q,r); merge(a,p,q,r);} }public static void main(String[] args){int[] a1 = {3,41,52,26,38,57,9,49};MergeSortTest mst =new MergeSortTest();mst.mergeSort(a1,0,a1.length);System.out.println(Arrays.toString(a1));}}4 SelectionSortimport java.util.*;public class MergeSortTest{private int[] l,r1;public void merge(int[] a,int p,int q,int r){int n1 =q-p+1;int n2 = r-q;l=new int;r1 = new int;for(int i=0;il=a;}l=Integer.MAX_VALUE;for(int i=0;ir1=a;}r1 =Integer.MAX_VALUE;int i=0;int j=0;for(int k=p;kif(l<=r1){a=l;i=i+1;}else{a=r1;j=j+1;}}}public void mergeSort(int[] a,int p,int r){if(p+1int q=(p+r)/2;mergeSort(a,p,q);mergeSort(a,q,r); merge(a,p,q,r);} }public static void main(String[] args){int[] a1 = {3,41,52,26,38,57,9,49};MergeSortTest mst =new MergeSortTest();mst.mergeSort(a1,0,a1.length);System.out.println(Arrays.toString(a1));}}5 HeapSortimport java.util.*;public class HeapSort{private int largest;public int left(int i){return 2*i+1;}public int right(int j){return 2*j+2;}public void maxHeapify(int[] a,int i){int l=left(i);int r=right(i);if((la)){largest=l;}else{largest=i;}if((ra)){largest=r;}if(largest!=i){int temp = a;a=a;a=temp;maxHeapify(a,largest);}}public void buildMaxHeap(int[] a){for(int i=a.length/2;i>=0;--i){maxHeapify(a,i);}}public void sort(int[] a){buildMaxHeap(a);//System.out.println(Arrays.toString(a));for(int i=a.length-1;i>=1;--i){int temp=a;a=a;a=temp;int[] b= new int;System.arraycopy(a,0,b,0,i-1);maxHeapify(b,0);System.arraycopy(b,0,a,0,i-1);}}public static void main(String[] args){HeapSort hs = new HeapSort();int[] a={23,17,14,6,13,10,1,5,7};hs.sort(a);System.out.println(Arrays.toString(a));}}6 BucketSortimport java.util.*;public class BucketSort {/*** @param args*/private LinkedList[] b;public void sort(double[] a){int n=a.length;b=new LinkedList;for(int i=0;ib[(int)(n*a)] = new LinkedList();}for(int i=0;ib[(int)(n*a)].add(Double.valueOf(a)); //System.out.println(b[(int)(n*a)]);}//System.out.println(Arrays.toString(b));for(int i=0;iif(b==null){continue;}else{Collections.sort(b);}}}public static void main(String[] args) {// TODO Auto-generated method stubdouble[] a ={0.79,0.13,0.16,0.64,0.39,0.20,0.89,0.53,0.71,0.42};BucketSort bs = new BucketSort();bs.sort(a);for(int i=0;iif(bs.b==null){continue;}else{Iterator it =bs.b.iterator();while(it.hasNext()){System.out.print(it.next()+" ");}}}//System.out.println(Arrays.toString(bs.b));}}7 CountingSortimport java.util.*;public class CountingSort {/*** @param args*/public void Sort(int[] a,int[] b,int k){int[] c= new int;for(int j=0;jc]=c]+1;}for(int i=1;ic=c+c;}for(int j=a.length-1;j>=0;j--){b]-1]=a;c]=c]-1;}}public static void main(String[] args) {// TODO Auto-generated method stubint[] a=new int[]{3,1,12,11,4,13};CountingSort cs = new CountingSort();int[] b = new int;cs.Sort(a,b,13);System.out.println(Arrays.toString(b));}}
页: [1]
查看完整版本: 各种排序算法的java实现