java-冒泡排序、選擇排序、二分查找

一、冒泡排序spa

 1 public void bubbleSort(int[] arr) {  2   for (int i = 0; i < arr.length - 1; i++) {                //外循環只須要比較arr.length-1次就能夠了
 3     for (int j = 0; j < arr.length - 1 - i; j++) {        //-1爲了防止索引越界,-i爲了提升效率
 4       if(arr[j] > arr[j+1]) {  5         int temp = arr[j];  6         arr[j] = arr[j + 1];  7         arr[j+1] = temp;  8       }  9     } 10   } 11 }

 

二、選擇排序code

 1 public void selectSort(int[] arr) {  2   for (int i = 0; i < arr.length - 1; i++) {                //只須要比較arr.length-1次
 3     for (int j = i + 1; j < arr.length; j++) {  4       if(arr[i] > arr[j]) {  5         int temp = arr[i];  6         arr[i] = arr[j];  7         arr[j] = temp;  8       }  9     } 10   } 11 }

 

三、二分查找blog

 1 public int getIndex(int[] arr, int value) {  2     int min = 0;  3     int max = arr.length - 1;  4     int mid = (min + max) / 2;  5         
 6     while(arr[mid] != value) {                    //當中間值不等於要找的值,就開始循環查找
 7         if(arr[mid] < value) {                    //當中間值小於了要找的值
 8             min = mid + 1;                        //最小的索引改變
 9         }else if(arr[mid] > value){               //當中間值大於了要找的值
10                 max = mid - 1;                    //最大的索引改變
11  } 12             
13         mid = (min + max) / 2;                    //不管最大仍是最小改變,中間索引都會隨之改變
14             
15         if(min > max) {                           //若是最小索引大於了最大索引,就沒有查找的可能性了
16             return -1;                            //返回-1
17  } 18  } 19     return mid; 20 }
相關文章
相關標籤/搜索