[Java] 关于数组的相关操作(如数组的求最大值,最小值,选择排序 二分法查找) →→→→→进入此内容的聊天室

来自 , 2019-05-10, 写在 Java, 查看 122 次.
URL http://www.code666.cn/view/0d3180d6
  1. /*这个类是关于数组的相关操作,如数组的求最大值,最小值,选择排序  二分法查找等 */
  2. public class ArrayTools {
  3.  
  4.         public int max(int[] array) {
  5.                 int max = Integer.MIN_VALUE;
  6.  
  7.                 for (int i = 0; i < array.length; i++) {
  8.                         if (array[i] > max) {
  9.                                 max = array[i];
  10.                         }
  11.                 }
  12.  
  13.                 return max;
  14.         }
  15.  
  16.         public int min(int[] array) {
  17.                 int min = Integer.MAX_VALUE;
  18.  
  19.                 for (int i = 0; i < array.length; i++) {
  20.                         if (array[i] < min) {
  21.                                 min = array[i];
  22.                         }
  23.                 }
  24.  
  25.                 return min;
  26.         }
  27.  
  28.         /**
  29.          * 选择排序
  30.          *
  31.          * @param array
  32.          */
  33.         public void selectSort(int[] array) {
  34.                 int minIndex;// 最小索引
  35.                 int temp;
  36.  
  37.                 for (int i = 0; i < array.length; i++) {
  38.                         minIndex = i;// 假设每轮第一个元素为最小元素
  39.                         // 从假设的最小元素的下一元素开始循环
  40.                         for (int j = i + 1; j < array.length; j++) {
  41.                                 // 如果发现有比当前array[smallIndex]更小元素,则记下该元素的索引于smallIndex中
  42.                                 if ((array[j] < array[minIndex])) {
  43.                                         minIndex = j;
  44.                                 }
  45.                         }
  46.  
  47.                         // 先前只是记录最小元素索引,当最小元素索引确定后,再与每轮的第一个元素交换
  48.                         temp = array[i];
  49.                         array[i] = array[minIndex];
  50.                         array[minIndex] = temp;
  51.  
  52.                 }
  53.         }
  54.  
  55.         /**
  56.          * 二分法查找,前提是已排序
  57.          *
  58.          * @param array
  59.          * @param des
  60.          * @return
  61.          */
  62.         public static int binarySearch(int[] array, int des) {
  63.  
  64.                 int low = 0;
  65.                 int high = array.length - 1;
  66.                 while (low <= high) {
  67.                         int middle = (low + high) / 2;
  68.                         if (des == array[middle]) {
  69.                                 return middle;
  70.                         } else if (des < array[middle]) {
  71.                                 high = middle - 1;
  72.                         } else {
  73.                                 low = middle + 1;
  74.                         }
  75.                 }
  76.                 return -1;
  77.         }
  78.  
  79.         /**
  80.          * 测试
  81.          *
  82.          * @param args
  83.          */
  84.         public static void main(String[] args) {
  85.                 int[] array = { 5, 9, 1, 0, 4, 2, -6, 3, 8, 0, 76, -7, 7, 11, 12, 19,
  86.                                 8, 9, 10, 28, 53 };
  87.                 ArrayTools arrayTools = new ArrayTools();
  88.  
  89.                 System.out.println("原数组:");
  90.                 for (int i = 0; i < array.length; i++) {
  91.                         System.out.print(array[i] + " ");
  92.                 }
  93.  
  94.                 System.out.println();
  95.                 System.out.println("选择排序结果:");
  96.                 arrayTools.selectSort(array);
  97.                 for (int i = 0; i < array.length; i++) {
  98.                         System.out.print(array[i] + " ");
  99.                 }
  100.                 System.out.println();
  101.                 System.out.println("二分法查找 9 的位置:" + arrayTools.binarySearch(array, 9));
  102.  
  103.                 System.out.println("最大值:" + arrayTools.max(array));
  104.                 System.out.println("最小值:" + arrayTools.min(array));
  105.  
  106.         }
  107. }

回复 "关于数组的相关操作(如数组的求最大值,最小值,选择排序 二分法查找)"

这儿你可以回复上面这条便签

captcha