• 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
            
        }
    
    }
  • 相关阅读:
    oracle增加字段,循环
    mybatis批量插入和更新
    oracle触发器
    Java中<? extends T>和<? super T>的理解
    函数式编程
    mybaitis
    操作word
    服务大厅流程
    jdk动态代理
    操作系统
  • 原文地址:https://www.cnblogs.com/Sherwin-liao/p/11020469.html
Copyright © 2020-2023  润新知