2019-06-13 java学习日记

冒泡排序

两个相邻位置比较,如果前面的元素比后面的元素大就换位置

 1 //冒泡排序
 2     public static void main(String[] args) {
 3         int[] arr = {32, 44, 55, 65, 11};
 4         bubble(arr);
 5         print(arr);
 6     
 7         
 8     }
 9 
10 
11     private static void bubble(int[] arr) {
12         //外循环只需要比较数组的长度-1次
13         for (int i = 0; i < arr.length - 1; i++) {
14         //内循环 -1是为了防止索引越界,-i是为了提高效率
15             for (int j = 0; j < arr.length - 1 - i; j++) {
16                 //这里这个大于小于是决定他是从大到小还是从小到大
17                 if (arr[j] > arr[j + 1]) {
18                     int a = arr[j];
19                     arr[j] = arr[j + 1];
20                     arr[j + 1] = a;
21                 }
22             }
23             
24         }
25     }
26     //打印
27     private static void print(int[] arr) {
28         for (int i = 0; i < arr.length; i++) {
29             System.out.print(arr[i] + " ");
30         }
31     }

选择排序

用一个索引位置上的元素,依次与其他索引位置上的元素比较,小在前面大的在后面

 1 public static void main(String[] args) {
 2         int[] arr = {32, 44, 55, 65, 11};
 3         bubble(arr);
 4 //      select(arr);
 5         print(arr);
 6     }
 7     /**
 8      * 选择排序
 9      * 1、返回值类型void
10      * 2、参数列表int[] arr
11      */
12     public static void selectSort(int[] arr) {
13       //只需要比较arr.length-1次
14         for (int i = 0; i < arr.length - 1; i++) {      
15             for (int j = i + 1; j < arr.length; j++) {
16                 if (arr[i] > arr[j]) {
17                  /*int temp = arr[i];
18                     arr[i] = arr[j];
19                     arr[j] = temp;    */
20                     swap(arr, i, j);
21                 }
22             }
23         }
24     }
25     /**
26      * 打印数组
27      * 1、返回值类型void
28      * 2、参数列表int[] arr
29      */
30     public static void print(int[] arr) {
31         for (int i = 0; i < arr.length; i++) {
32             System.out.print(arr[i] + " ");
33         }
34     }
35     /**
36      * 换位操作
37      * 1、返回值类型,void
38      * 2、参数列表int[] arr.int i,int j
39      * 
40      * 如果某个方法,只针对本类使用,不想让其他类使用就可以定义成私有的
41      */
42     private static void swap(int[] arr,int i,int j) {
43         int temp = arr[i];
44         arr[i] = arr[j];
45         arr[j] = temp;
46     }
47 }

二分查找

如果数组无序,就不能使用二分查找

 1 public static void main(String[] args) {
 2             int[] arr = {11,22,33,44,55,66,77};
 3             System.out.println(getIndex(arr, 22));
 4             System.out.println(getIndex(arr, 66));
 5             System.out.println(getIndex(arr, 88));
 6         }
 7         /**
 8          * 二分查找
 9          * 1、返回值类型int
10          * 2、参数列表int[] arr,int value
11          * 
12          */
13         public static int getIndex(int[] arr, int value) {
14             int min = 0;
15             int max = arr.length - 1;
16             int mid = (min + max) / 2;
17            //当中间值不等于要找的值,就开始循环查找
18             while (arr[mid] != value) {     
19            //当中间值小于了要找的值
20                 if (arr[mid] < value) {     
21            //最小的索引改变
22                     min = mid + 1;              
23            //当中间值大于了要找的值
24                 }else if (arr[mid] > value) {   
25            //最大的索引改变
26                     max = mid - 1;               
27                 }
28            //无论最大还是最小改变,中间索引随之改变     
29                 mid = (min + max) / 2;           
30            //如果最小索引大于了最大索引,就没有查找的可能性了     
31                 if (min > max) {            
32            //返回-1           
33                     return -1;                    
34                 }
35             }
36             return mid;
37         }

Arrays类的概述

针对数组进行操作的工具类

提供了排序,查找等功能

Arrays类的成员方法

1,public static String toString(int[] a)

2,public static void sort(int [] a)

3,public static int binarySearch(int [] a,int key)

package com.array;

import java.util.Arrays;

public class Demo3 {

    public static void main(String[] args) {
        int[] arr = {33,66,44,55,11,22};
        System.out.println(Arrays.toString(arr));             //数组转字符串  
        
        Arrays.sort(arr);
        System.out.println(Arrays.toString(arr));             //排序
        
        int[] arr2 = {11,22,33,44,55,66};
        System.out.println(Arrays.binarySearch(arr2, 22));
        System.out.println(Arrays.binarySearch(arr2, 66));
        System.out.println(Arrays.binarySearch(arr2, 88));    //-插入点-1
        
    }

}
原文地址:https://www.cnblogs.com/Sherwin-liao/p/11020469.html