zoukankan      html  css  js  c++  java
  • javase学习第12天(数组排序及元素查找)

    数组排序元素查找

    对数组排序最常用的是冒泡排序和选择排序:冒泡排序是每次将最大值都放在当前下标范围的最大下标处;选择排序就是每次都从前往后依次拿一个元素和其后面的所有元素比,来确定当前位置的元素。

    冒泡排序

    相邻元素两两比较,大的往后放,第一次完毕,最大值出现了最大索引出(也可根据要求把最小值放最后),第二次比较后,最大值放在了倒数第二的位置,一直到第二个元素确定了,整个数组的顺序也就确定了:

     1 class Bubble{
     2     public static void main(String[]args){
     3         
     4     int [] arr={23,34,12,24,67,45,90};
     5     System.out.println("排序前");
     6     printArr(arr);
     7     System.out.println("排序后");
     8     sort(arr);
     9     printArr(arr);
    10     
    11     }
    12     //冒泡排序
    13     public static void sort(int[]arr){
    14         // for(int i=0;i<arr.length-1;i++){
    15             // for(int j=0;j<arr.length-1-i;j++){
    16         for(int i=arr.length-1;i>0;i--){
    17             for(int j=0;j<i;j++){        
    18                 if(arr[j]<arr[j+1]){
    19                     int tem=arr[j];
    20                     arr[j]=arr[j+1];
    21                     arr[j+1]=tem;
    22                 }
    23             
    24             }
    25         }
    26     }
    27     //打印数组
    28     public static void printArr(int [] arr){
    29             System.out.print("[");
    30         for(int i=0;i<arr.length;i++){
    31             if(i==arr.length-1){
    32             System.out.print(arr[arr.length-1]+"]");
    33             }
    34             else{
    35             System.out.print(arr[i]+",");
    36             }
    37         }
    38         System.out.println();
    39     }
    40 }

     

    选择排序

    从0索引开始,依次后后面元素比较,小的往前放,第一次完毕,最小值出现在了最小索引处;

     1 class Com{
     2     public static void main(String[]args){
     3         
     4     int [] arr={23,34,12,24,67,45,90};
     5     System.out.println("排序前");
     6     printArr(arr);
     7     System.out.println("排序后");
     8     printSele(arr);
     9     printArr(arr);
    10     
    11     }
    12     //冒泡排序
    13     public static void sort(int[]arr){
    14         // for(int i=0;i<arr.length-1;i++){
    15             // for(int j=0;j<arr.length-1-i;j++){
    16         for(int i=arr.length-1;i>0;i--){
    17             for(int j=0;j<i;j++){        
    18                 if(arr[j]<arr[j+1]){
    19                     int tem=arr[j];
    20                     arr[j]=arr[j+1];
    21                     arr[j+1]=tem;
    22                 }
    23             
    24             }
    25         }
    26     }
    27     //选择排序
    28     public static void printSele(int []arr){
    29         for(int i=0;i<arr.length-1;i++){
    30             for(int j=i+1;j<arr.length;j++){
    31                 if(arr[i]>arr[j]){
    32                     int tem=arr[i];
    33                     arr[i]=arr[j];
    34                     arr[j]=tem;
    35                 }
    36             }
    37         }
    38     }
    39     //打印数组结果
    40     public static void printArr(int [] arr){
    41             System.out.print("[");
    42         for(int i=0;i<arr.length;i++){
    43             if(i==arr.length-1){
    44             System.out.print(arr[arr.length-1]+"]");
    45             }
    46             else{
    47             System.out.print(arr[i]+",");
    48             }
    49         }
    50         System.out.println();
    51     }
    52 }

     

    二分查找(折半查找)

    二分查找的前提是数组已经是有序的了:

     1 /**
     2 二分查找
     3 */
     4 class Sort{
     5     public static void main(String[]args){
     6         int [] arr={33,44,35,36,53,43,77,66,52};
     7         int[] arr0=ArrSort(arr);
     8         for(int i:arr0){
     9             System.out.print(i+"--");
    10         }
    11         System.out.println();
    12         System.out.println("-----------");
    13         int num=43;
    14         int max=arr.length;
    15         int min=0;
    16         int index=-1;
    17         while(min<=max){
    18             int mid=(min+max)/2;
    19             if(arr0[mid]==num){
    20                 index=mid;
    21                 break;
    22             }
    23             else if(arr0[mid]>num){
    24                 max=mid-1;
    25             }
    26             else{
    27                 min=mid+1;
    28             }
    29         }
    30         System.out.println(index);
    31     }
    32     
    33     public static int[] ArrSort(int[] arr){
    34         for(int i=0;i<arr.length-1;i++){
    35             for(int j=i+1;j<arr.length;j++){
    36                 if(arr[i]>arr[j]){
    37                     int tem =arr[i];
    38                     arr[i]=arr[j];
    39                     arr[j]=tem;
    40                 }
    41             }
    42         }
    43         return arr;
    44     }
    45 }

    Arrays类

    主要有以下静态方法:

    1、public static String toString(int[] a):将数组转换成字符串

    2、public static void sort(int[] a):对一个int数组进行升序排序ascending

    3、public static int binarySearch(int[] a,int key):在数组中进行二分查找

    基本类型包装类

    byte --> :Byte

    short -->:Short

    int -->:Integer

    long-->: Long

    float -->:Float

    double -->:Double

    char -->:Character

    boolean--> :Boolean

    Integer类概述及其构造方法

    Integer类在对象中包括了一个基本类型int的值;给类提供多个方法,能够在int类型和String类型之间互相转换。

    1、public int intValue():返回当前对象包装的基本数据类型的int值

    2、public static int parseInt(String s):将一个字符串转换成int值

    3、public static String toString(int i):将一个int值转换成字符串

    4、public static Integer valueOf(int i):用一个int值构建一个Integer对象

    5、public static Integer valueOf(String s):用一个字符串构建一个Integer对象

    自动装箱

    1 Integer x = new Integer(4);//可以直接写成 
    2 
    3 Integer x = 4; //自动装箱。 
    4 
    5 x = x + 5; //自动拆箱。通过intValue方法。

    需要注意: 在使用时,Integer x = null;

    上面的代码就会出现NullPointerException。

  • 相关阅读:
    Go语言入门系列(三)之数组和切片
    详解Java的对象创建
    Go语言入门系列(二)之基础语法总结
    Go语言入门系列(一)之Go的安装和使用
    SpringCloud--Ribbon--配置详解
    自己动手作图深入理解二叉树、满二叉树及完全二叉树
    自已动手作图搞清楚AVL树
    《RabbitMQ》什么是死信队列
    《RabbitMQ》如何保证消息不被重复消费
    《RabbitMQ》如何保证消息的可靠性
  • 原文地址:https://www.cnblogs.com/yihaifutai/p/6658984.html
Copyright © 2011-2022 走看看