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。

  • 相关阅读:
    java OA系统 自定义表单 流程审批 电子印章 手写文字识别 电子签名 即时通讯
    flowable 获取当前任务流程图片的输入流
    最新 接口api插件 Swagger3 更新配置详解
    springboot 集成 activiti 流程引擎
    java 在线考试系统源码 springboot 在线教育 视频直播功能 支持手机端
    阿里 Nacos 注册中心 配置启动说明
    springboot 集成外部tomcat war包部署方式
    java 监听 redis 过期事件
    springcloudalibaba 组件版本关系
    java WebSocket 即时通讯配置使用说明
  • 原文地址:https://www.cnblogs.com/yihaifutai/p/6658984.html
Copyright © 2011-2022 走看看