Easy to review and consult, special record.
1. Bubble sort (Ascending)
Idea: Each round will be two consecutive number comparison size, if the latter is greater than the previous one, to exchange, each round of bubbling can find a maximum value;
Then, the comparison of the number of rounds is length-1-i, explained as follows: Each round produces the largest is fixed, so to subtract the already ordered number, 1 means, I only loop to the last one, and the latter to compare the line
1 Public Static voidBubblesort (int[] array) {//Bubble Sort2 inttemp;3 for(inti = 0; i < Array.Length; i++) {//Number of wheels4 for(intj = 0; J < array.length-i-1; J + +) {//number of comparisons per round5 if(Array[j] > array[j + 1]) {6temp = array[j + 1];7Array[j + 1] =Array[j];8ARRAY[J] =temp;9 }Ten } One } A}
2. Fast sorting algorithm (recursive)
Idea: Find a benchmark value, generally with the first value as key, according to the size of the key, the elements to be sorted into two groups, the number on the left is less than key, the middle is key, the value on the right is greater than key;
Use the left and right array subscript to find the i,j, first find the first value less than key, the value of I override, and then i++, find the first value greater than key, the J corresponding value is overwritten, and finally find the value of the reference value, the key is placed. Then recursion.
Public Static voidQucikquery (int[] Array,intLeftintright) {//Fast-queue recursive implementation intkey = Array[left];//used to preserve the first value; inti =Left ; intj =Right ; if(Left >=Right ) { return; } while(I <j) { while(I < J && Array[j] >key) J--; if(I < J) {//find the first value greater than key to swapArray[i] =Array[j]; } while(I < J && Array[i] <key) I++; if(I <j) {Array[j]=Array[i]; }} Array[i]=key; Qucikquery (array, left, I-1); Qucikquery (Array, I+ 1, right); }
Another quick sort
Public Static voidQuickSort (int[] A,intLeftintRight ) { if(Left >Right )return; intPivot = A[left];//define a Datum value the first number of an array inti =Left ; intj =Right ; while(I <j) { while(Pivot <= A[j] && i < J)//find a number smaller than the base value from right to leftj--; while(Pivot >= A[i] && i < J)//find a number larger than the base value from left to righti++; if(I < J)//if i<j, swap them { inttemp =A[i]; A[i]=A[j]; A[J]=temp; }} A[left]=A[i]; A[i]= pivot;//Put the benchmark value in the right placeQuickSort (A, left, i-1);//quickly sort the sub-array on the leftQuickSort (A, i + 1, right);//quickly sort the sub-array on the right}
Follow-up, will continue to supplement.
Sorting algorithm-subsequent additions