Personal summary of the common sorting algorithm
Public classSort {//1. Bubbling: stable, optimal O (n) worst O (n^2) average O (n^2) Private Static voidSort1 (int[] arr) { for(inti = 0; i < arr.length; i++) { for(intj = 0; J < Arr.length-1; J + +) { if(Arr[j] > arr[j + 1]) { intTMP =Arr[j]; ARR[J]= Arr[j + 1]; Arr[j+ 1] =tmp; } } } } //2, Choice: unstable, optimal O (n^2) the worst O (n^2) average O (n^2) Private Static voidSort2 (int[] arr) { for(inti = 0; i < arr.length-1; i++) { for(intj = i + 1; J < Arr.length; J + +) { if(Arr[i] >Arr[j]) { intTMP =Arr[j]; ARR[J]=Arr[i]; Arr[i]=tmp; } } } } //3, insert: stable, optimal O (n) worst O (n^2) average O (n^2) Private Static voidSORT3 (int[] arr) { intInsertData = 0; for(inti = 0; i < arr.length; i++) {InsertData=Arr[i]; intj = I-1; while(J >= 0 && InsertData <Arr[j]) {Arr[j+ 1] =Arr[j]; J--; } arr[j+ 1] =InsertData; } } //4. Hill: Unstable, optimal O (n) worst O (n^1.5) average O (n^1.5) Private Static voidSORT4 (int[] arr) { intSpace =arr.length; while(Space > 1) {Space= SPACE/2; for(inti = 0; I < space; i++) { for(intj = i + space; J < Arr.length; j = j +space) { intInsertData =Arr[j]; intK = J-space; while(k >= i && InsertData <Arr[k]) {Arr[k+ Space] =Arr[k]; K= K-space; } arr[k+ Space] =InsertData; } } } } //5, fast: unstable, optimal O (Nlogn) worst O (n^2) average O (nlogn) Private Static voidSort5 (int[] arr,intStartintend) { intleft =start; intright = End-1; intPivot =Arr[end]; while(Left <Right ) { if(Arr[left] <pivot) { Left++; Continue; } if(Arr[right] >pivot) { Right--; Continue; } swap (arr, left, right); Left++; Right--; } if(Arr[left] <pivot) { Left++; } swap (arr, left, end); if(Left-1 >start) sort5 (arr, start, left-1); if(Left + 1 <end) Sort5 (arr, left+ 1, end); } Private Static voidSwapint[] arr,intXinty) {intTMP =Arr[x]; ARR[X]=Arr[y]; Arr[y]=tmp; } //6, Merge: stable, optimal O (nlogn) the worst O (nlogn) average O (nlogn) Public Static voidSORT6 (int[] arr,intLowintHigh ) { intMid = (low + high)/2; if(Low <High ) {SORT6 (arr, Low, mid); Sort6 (arr, Mid+ 1, high); Merge (arr, Low, Mid, high); } } Public Static voidMergeint[] arr,intLowintMidintHigh ) { int[] temp =New int[High-Low + 1]; inti = low;//left Pointer intj = mid + 1;//Right Pointer intK = 0; //move the smaller number first to the new array while(I <= mid && J <=High ) { if(Arr[i] <Arr[j]) {Temp[k+ +] = arr[i++]; } Else{temp[k+ +] = arr[j++]; } } //Move the left remaining number into the array while(I <=mid) {temp[k+ +] = arr[i++]; } //move the remaining number in the right side into the array while(J <=High ) {Temp[k+ +] = arr[j++]; } //overwrites the number in the new array with the Nums array for(intK2 = 0; K2 < Temp.length; k2++) {Arr[k2+ Low] =TEMP[K2]; } } //7, Heap: unstable, optimal O (Nlogn) worst O (nlogn) average O (nlogn) Private Static voidSort7 (int[] arr) {}//Test Public Static voidMain (string[] args) {int[] Array = {10, 8, 24, 32, 7, 6, 100, 55, 43, 21, 56, 55, 10000, 3000 }; //Sort1 (array); //Sort2 (array); //sort3 (array); //sort4 (array); //Sort5 (array,0,array.length-1);SORT6 (array, 0, array.length-1); System.out.println (arrays.tostring (array)); }}
Common Sort algorithm version--java