1:冒泡排序:
相鄰元素兩兩比較捡偏,大的往后放,第一次完畢帅容,最大值出現(xiàn)在了最大索引處颇象。同理,其他的元素就可以排好并徘。
public static void bubbleSort(int[] arr) {
???? for(int x=0; x <arr.length;x++){
?????????? for(int y=0; y<arr.length-1;y++){
?????????????? if(arr[y]>arr[y+1]) {
???????????????int temp = arr[y];
?????????????? arr[y] = arr[y+1];
?????????????? arr[y+1] = temp;
} } } }
2:簡單選擇排序:
把0索引的元素遣钳,和索引1以后的元素都進(jìn)行比較,第一次完畢麦乞,最小值出現(xiàn)在了0索引蕴茴。同理,其他的元素就可以排好姐直。
public static void selectSort(int[] arr) {
???? for(int x=0; x<arr.length-1;x++){
???????? for(int y=x+1;y<arr.length;y++(){
???????????????? if(arr[y]<arr[x]){
???????????????????????? int temp=arr[x];
???????????????????????? arr[x]=arr[y];
????????????????????????? arr[y]=temp;
}}}}
3:插入排序:
效果圖:
它的工作原理是通過構(gòu)建有序序列荐开,對于未排序數(shù)據(jù),在已排序序列中從后向前掃描简肴,找到相應(yīng)位置并插入晃听。插入排序在實現(xiàn)上,在從后向前掃描過程中,需要反復(fù)把已排序元素逐步向后挪位能扒,為最新元素提供插入空間佣渴。
代碼:
4:快速排序
快速排序的原理就是每次設(shè)置一個基準(zhǔn)點,這個基準(zhǔn)點可以是要排序的一趴數(shù)之間的任何數(shù),然后將比基準(zhǔn)點小的數(shù)放在基準(zhǔn)點左邊,比基準(zhǔn)點大的數(shù)放在基準(zhǔn)點右邊
代碼:
5:二分排序:
針對數(shù)組有序的情況(千萬不要先排序,在查找)
public static int binarySearch(int[] arr,int value) {
???????? ?int min = 0;
??????????int max = arr.length-1;
????????? int mid = (min+max)/2;
???????while(arr[mid] != value) {
?????????????? if(arr[mid] > value) {
???????????????????? max = mid - 1;
???????????? ?}else if(arr[mid] < value) {
?????????????????? ?min = mid + 1;
????????? }
???????????? ?if(min > max) {
?????????????????? ?return -1;
???????????? }
?????????????????? mid = (min+max)/2;
?}
???????????????? return mid;
?}