Bubbles, the choice will not write. Very common
One: Insert sort:
/*** Insert Sort*/ Public classP4_3 {Static voidInsertsort (int[] a) { intj,t; /** * */ for(inti = 0; i < a.length; i++) {T=A[i]; J=i-1; while(j>=0&&t<A[j]) {A[j+1]=A[j]; J--; } a[j+1]=T; } } Public Static voidMain (string[] args) {int[] A=New int[]{3,4,2,6,2,5,1,9,28}; Insertsort (a); for(inti = 0; i < a.length; i++) {System.out.println (a[i]); } }}
Two: Shell sort
/*** Shell Sort*/ Public classP4_4 {Static voidShellsort (int[] a) { for(intR = A.LENGTH/2; R >=1; r/=2) { for(inti = r; i < a.length; i++) { intt=A[i]; intj=i-R; while(j>=0&&t<A[j]) {A[j+r]=A[j]; J=j-R; } a[j+r]=T; } } } Public Static voidMain (string[] args) {int[] A=New int[]{3,4,2,6,25,1,9,28}; Shellsort (a); for(inti = 0; i < a.length; i++) {System.out.println (a[i]); } }}
Three: Quick-line
/*** Qicksort*/ Public classP4_5 {Static voidQicksort (int[] A,intLeftintRight ) { intf,t; intrtemp,ltemp; Rtemp=Right ; Ltemp=Left ; F=a[(right+left)/2]; while(ltemp<rtemp) { while(a[ltemp]<f) {Ltemp++; } while(a[rtemp]>f) {Rtemp--; } if(ltemp<rtemp) { //will the left greater than the demarcation worth the number of exchanges to zip less than the demarcation worthy positiont=A[rtemp]; A[rtemp]=A[ltemp]; A[ltemp]=T; Ltemp++; Rtemp--; } } if(ltemp==rtemp) {Ltemp++; } if(right>ltemp) {Qicksort (a,rtemp+1, right); } if(rtemp>Left ) {Qicksort (a,left,ltemp-1); } } Public Static voidMain (string[] args) {int[] A=New int[]{3,4,2,6,25,1,9,73}; Qicksort (A,0,a.length-1); for(inti = 0; i < a.length; i++) {System.out.println (a[i]); } }}
Four: Heap Sort
/*** Heapsort*/ Public classP4_6 {Static voidHeapsort (int[] A,intN) { inti,j,h,k; intT; //Build Heap for(i = n/2-1; I >=0; i--) {//find the parent node of the current last node//There is a right sub-tree while(2*i+1<N) {J=2*i+1; if(j+1<N) { if(a[j]<a[j+1]) {J++; } } //Place the largest position on the node if(a[i]<A[j]) {T=A[i]; A[i]=A[j]; A[J]=T; I=J; }Else { Break; } } } //Output heap:System.out.println ("Heap of output:"); for(intL = 0; L < A.length; l++) {System.out.print (a[l]); System.out.print (" "); System.out.println (); } //Find the maximum for(i = n-1; I >=0; i--) { //put the found data on the far rightT=a[0]; a[0]=A[i]; A[i]=T; K=0; //K There is a subtree while((2*k+1) <i) {J=2*k+1; if((j+1) <i) { if(a[j]<a[j+1]) {J++; } } if(a[k]<A[j]) {T=A[k]; A[K]=A[j]; A[J]=T; K=J; }Else { Break; } } } } Public Static voidMain (string[] args) {int[] A=New int[]{1,3,5,7,9,2,4,6,8,0}; Heapsort (a,a.length); for(intL = 0; L < A.length; l++) {System.out.print (a[l]); System.out.print (" "); } }}
V: Merge sort
/*** MergeSort*/ Public classp4_7 {Static voidMergeone (int[] A,int[] B,intNintLen) { inti,j,k,s,e; S= 0;//Start Position while((S+len) <N) { //End PositionE=s+2*len-1; if(e>N) {e=n-1; } //Mergingk=s; I=s; J=s+Len; while(i< (S+len) &&j<=e) { if(a[i]<A[j]) {B[k++]=a[i++]; }Else{b[k++]=a[j++]; } } //Copy an array that is not merged while(i< (s+len)) {B[k++]=a[i++]; } while(j<=e) {B[k++]=a[j++]; } s=e+1;//where to start next } //No comparison of the merger came over if(s<N) { for(; s<n;s++) {B[s]=A[s]; } } } Static voidMergeSort (int[] A,intN) { int[] p=New int[n]; intF,len; Len=1; F=0; while(len<N) { if(f==1) {mergeone (P,a,n,len); }Else{mergeone (A,p,n,len); } Len=2*Len; F=1-F; } if(f==1){ for(inth = 0; h < n; h++) {A[h]=P[h]; } } } Public Static voidMain (string[] args) {int[] A=New int[]{3,4,2,6,25,1,9,92,19}; MergeSort (a,a.length); for(inti = 0; i < a.length; i++) {System.out.println (a[i]); } }}
Java implementation of sorting algorithm