java学习第05天(数组常见操作、数组中的数组)

(4)数组常见操作

a.遍历取值

class  ArrayDemo3
{
   public static void main(String[] args)
   {
      //System.out.println("Hello World!");
      //格式1
      /*
      需要一个容器,但不明确容器的具体数据。
      */
      //int[] arr = new int[8];
      //格式2
      /*
      需要一个容器,储存一直的具体数据。
      */
      //元素类型[] 数组名 = new 元素类型[](元素,元素,....);

      //int[] arr = new int[]{12,25,58,69};

      int[] arr = {12,25,58,69};//写法相对较简单

      /*
      对数组的操作最基本的功能就是存和取。
      核心思想:就是对角标的操作。
      */

      //System.out.println(arr[0]);

      //System.out.println(arr[1]);

      //System.out.println(arr[2]);

      //System.out.println(arr[3]);

      //System.out.println(arr.length);//arr数组的长度

      for(int x=0;x<arr.length ;x++)
      {                 System.out.println("arr["+x+"]="+arr[x]+";");
      }
   }
}     

b.获取最值(最大值,最小值)

class ArrayDemo4
{
   public static void main(String[] args)
   {
      int[] arr = {25,56,35,97,39};
      int max = getMax(arr);
      System.out.println("max="+max);
   } 

   /*
   获取数组中的最大值
   1.需要进行比较,并定义变量记录每次比较后较大的值。
   2.对数组中的元素进行遍历取出,和变量中记录的元素进行比较。
      如果遍历到的元素大于变量中记录的元素,就用变量记录住较大的值。
   3.遍历结束,该变量记录就是最大值。 

   定义一个功能来实现。
   明确一,结果
        是数组中的元素。
   明确二,位置内容
        数组。
   */

   public static int getMax(int[] arr)
   {
      //定义变量记录较大的值。
      int maxElement = arr[0];
      for(int x = 0;x<arr.length ;x++)
      {
        if(arr[x]>maxElement)
        {
           maxElement = arr[x];
        }
      }
      return maxElement;
   } 

   public static int getMax_2(int[] arr)
   {
      //定义变量记录较大的值。
      int maxIndex = 0;
      for(int x = 0;x<arr.length ;x++)
      {
        if(arr[x]>arr[maxIndex])
        {
           maxIndex = x;
        }
      }
      return arr[maxIndex];
   }
}

c.排序(选择排序、冒泡排序)

class ArrayDemo4
{
   public static void main(String[] args)
   {
      int[] arr = {25,56,35,97,39};
      selectSort(arr);
   }

   /*
   选择排序
   */
   public static void selectSort(int[] arr)
   {
      for(int x=0;x<arr.length-1;x++)
      {
        for(int y=x+1;y<arr.length;y++)
        {
           if(arr[x]>arr[y])
           {
              int temp = arr[x];
              arr[x] = arr[y];
              arr[y] = temp;
           }
        }
      }
   } 

  /*
   冒泡排序
   */
   public static void bubbleSort(int[] arr)
   {
      for(int x=0;x<arr.length;x++)
      {
        for(int y=0;y<arr.length-1-x;y++)
        {
           if(arr[y]>arr[y+1])
           {
              int temp = arr[y];
              arr[y] = arr[y+1];
              arr[y+1] = temp;
           }
        }
      }
   }
}

d.拆半查找(二分查找)

(5)数组中的数组

class ArrayDemo5
{
   public static void main(String[] args)
   {
      //int [] arr = {5,8,12,54,23,69,52};
      //int index = getIndex(arr,619);
      //int [] arr = {5,8,12,23,39,69,95};
      //int index = halfSearch_2(arr,70);
      //System.out.println(index);
      //int index1 = Arrays.binarySearch(arr,12);//如果存在,返回的是具体角标位,如果不存在,返回的是 -插入点-1;
      //System.out.println("index1="+index1);
      toHex_1(60);
      //System.out.println("index1="+index1);
   }
   /*
   二分查找法
   */
   public static int halfSearch(int[] arr,int key)
   {
      int max,min,mid;
      min = 0;
      max = arr.length-1;
      mid = (min+max)/2;
      while(arr[mid] != key)
      {
        if(key>arr[mid])
        {
           min = mid+1;
        }else
        {
           max = mid-1;
        }
        if(max<min)
        {
           return -1;
        }
        mid = (min+max)/2;
      }
      return mid;
   } 

   public static int halfSearch_2(int[] arr, int key)
   {
      int max,min,mid;
      min = 0;
      max = arr.length-1;
      while(min<max)
      {
        mid = (min+max)>>1;//右移1位就是除2.
        if(key>arr[mid])
           min = mid+1;
        else if(key<arr[mid])
           max = mid-1;
        else
           return mid;
      }
      return -1;
   }

   /*
   数组常见功能:查找。如果数组中有两个目的元素,返回的是第一个元素所在的索引。
   */
   /*public static int getIndex(int arr[],int key)
   {
      for(int x=0;x<arr.length;x++)
      {
        if(arr[x] == key)
        {
           return x;
        }
      }
      return -1;
   }*/
   /*
   什么时候使用数组呢?
   如果数据出现了对应关系,而且对应关系的一方是有序的数字编号,并作为角标使用,
   这时候就必须要想到数组的使用。
   就可以将这些数据储存到数组中。
   根据运算的结果作为角标直接去查数组中对应的元素即可。
   这种方式:称为查表法。
   */

   public static void toHex_1(int num){
      //定义一个对应关系表
      char[] chs = {‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};
      for(int x=0;x<8;x++)
      {
        int temp = num & 15;
        System.out.print(chs[temp]);
        num = num >>>4;
      }
   }

   public static void toHex_2(int num){
      //定义一个对应关系表
      char[] chs = {‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘,‘9‘,‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘};
      /*
      一会查表会查到比较多的数据
      数据一多,就先存起来,再进行操作。
      所以定义一个数组,临时容器
      */
      char[] arr = new char[8];
      int pos = 0;
      while(num != 0)
      {
        int tamp = num&15;
        arr[pos++] = chs[temp];
        num = num >>>4;
      }
   }
}

原文地址:https://www.cnblogs.com/Strive-count/p/9220944.html

时间: 2024-11-08 21:15:06

java学习第05天(数组常见操作、数组中的数组)的相关文章

数组常见操作_使用字母打印正三角形

数组常见操作: 使用字母打印正三角形 public class fifty { public static void main(String[] args) { char[] c = {'A','B','C','D','E','F','G'}; //要打印的行数 for(int i = 0;i<c.length; i++){ //打印每一行空格 for(int j = i; j<c.length-1; j++){ System.out.print(" "); } //打印每

数组常见操作_猜数游戏

数组常见操作: 猜数游戏:从键盘中任意输入一个数据,判断数列中是否包含此数,并记录该数在数组中存在多少次 public class fortyNine { public static void main(String[] args) { Scanner input = new Scanner(System.in); int[] sum = {10,20,21,34,65,76,6,87,98,20}; System.out.println("猜数游戏开始!"); System.out.

数组常见操作、Arrays类、基本数据类型包装类

数组常见操作 冒泡排序法 选择排序法 二分查找法 Arrays类 成员方法示例 基本数据类型包装类 基本类型和包装类的对应 Integer类举例 装箱和拆箱 int转换成String类型 String类型转换成int类型 原文地址:http://blog.51cto.com/13987153/2308625

JS 数组常见操作汇总,数组去重、降维、排序、多数组合并实现思路整理

壹 ? 引 JavaScript开发中数组加工极为常见,其次在面试中被问及的概率也特别高,一直想整理一篇关于数组常见操作的文章,本文也算了却心愿了. 说在前面,文中的实现并非最佳,实现虽然有很多种,但我觉得大家至少应该掌握一种,这样在面试能解决大部分数组问题.在了解实现思路后,日常开发中结合实际场景优化实现,提升性能也是后期该考虑的. 本文主要围绕数组去重.数组排序.数组降维.数组合并.数组过滤.数组求差集,并集,交集,数组是否包含某项等知识点展开,附带部分知识拓展,在看实现代码前也建议大家先自

Java学习之IO流(其他操作流 【操作基本数据类型、操作字节数组、操作字符数组、操作字符串】)

操作基本数据类型DataInputStream.DataOutputStream 1 DataOutputStream dos = new DataOutputStream(new FileOutputStream("data.txt")); 2 dos.writeUTF("你好"); 3 dos.close(); 4 5 DataInputStream dis = new DataInputStream(new FileInputStream("data

JAVA-初步认识-第五章-数组-常见操作-遍历

一. 数组操作 定义好数组后,要存储在数组中的数据拿出来操作.怎么取? 对于数组操作最重要的操作有两种,一个是存,另一个是取.同时,基于这两个操作又衍生出常见的功能性操作. 存取的核心思想:对角标的操作. 二. 之前要求的都是输出数组中的单个数据,如果要求输出数据中的全部数据,仔细观看下面的操作.为了提高复用性,可以采用循环结构来书写语句,while和for都可以,但是for定义的局部代码块可以释放变量.数组操作完,就结束了,称为了垃圾,采用for更好. 如果数组内的元素数目特别多,我们要想全部

【代码学习】MYSQL数据库的常见操作

============================== MYSQL数据库的常见操作 ============================== 一.mysql的连接与关闭 -h:指定所连接的服务器位置 -u:数据库的用户名 -p:数据库的密码 1 mysql -u 用户名 -p //连接数据库 2 密码 3 exit //关闭数据库 1 mysql_connect($host,$user,$password); //连接数据库 2 mysql_close() //关闭数据库 二.创建数据

[原创]Scala学习:数组的基本操作,数组进阶操作,多维数组

1.Scala中提供了一种数据结构-数组,其中存储相同类型的元素的固定大小的连续集合.数组用于存储数据的集合,但它往往是更加有用认为数组作为相同类型的变量的集合 2 声明数组变量: 要使用的程序的数组,必须声明一个变量来引用数组,必须指定数组变量可以引用的类型.下面是语法声明数组变量: var z:Array[String] = new Array[String](3) or var z = new Array[String](3) or var z = Array("Zara", &

JAVA-初步认识-第五章-数组-常见操作-冒泡排序

一. 冒泡排序 这里介绍了另一种排序的方法,冒泡排序法.选择排序法比较接近人们正常的思维,一个数据和剩下的说有数据比较. 冒泡排序法是临近的数据间进行比较,大的数据就调到右侧,角标1-2的数据对比,角标2-3的数据对比...... 无论是选择排序还是冒泡排序都是先求最值. 冒泡排序法,是一轮一轮地进行左右两侧的数据进行对比.第一轮将所有数据中最大的数据移动到了最右侧,这种操作的核心在于:一直保证大的数据在右侧,那么经过不断地对调,最大的数据肯定在最后一位中.第一轮将最大的数据移动到了最右边,接下