原理:java
經過數組相鄰兩個數比較大小,獲得左小右大的排序。循環以上操做,將得到一個數組的最大數,並在數組最大索引處。算法
由於已經得到了最大數,下次循環次數-1,以此類推直至排序完。數組
代碼實現:優化
private static void bubleSort(int[] arr) { int js=arr.length-1; int tmp; for (int i = 0; i < js; i++) { for (int j = 0; j < js; j++) { if(arr[j]>arr[j+1]){ tmp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=tmp; } } js--; } }
目的:在數組中查找一個數字的索引。ui
使用要求:基於排序,按照大到小,或小到大均可以。code
原理:排序
獲取數組中間索引的數組值,而後與要查找的數字進行比較,只有三種結果>、=、<,進行不一樣的判斷返回結果遞歸
代碼實現:索引
private static int binarySearch(int[] arr, int num) { int max=arr.length; int min=0; int tmp = 0; if(max<min){ return -1; } for (int i = 0; i < arr.length; i++) { tmp=(max+min)/2; if(arr[tmp]>num) max=tmp; else if(arr[tmp]<num) min=tmp; else return tmp; } return tmp; }
目的:在數組中,規則排序。class
原理:
此時得到的數組,相同的索引左邊都比中間索引的值小,索引右邊都比中間索引的值大。可經過遞歸實現後面數據排序操做。中間索引左邊的數據再次重複1234補,數組右邊同理。
代碼實現:
private static void quickSort(int[] arr, int left, int right) { if(left>right){ return; } int start=left; int end=right; int jl=arr[start]; while(left!=right){ while (arr[right]>=jl&&right>left){ right--; } while(arr[left]<=jl&&right>left){ left++; } int tmp=arr[left]; arr[left]=arr[right]; arr[right]=tmp; } arr[start]=arr[right]; arr[right]=jl; quickSort(arr,start,left-1); quickSort(arr,left+1,end); }
謝謝觀看,如發現錯誤優化,請指正謝謝,祝您學有所成。