数组

xiaoxiao2021-02-28  48

数组的作用和类型     1.作用:存储相同数据类型的一组数据,对同类型数据进行集中管理,便于遍历。     2.数组类型:数组类型就是数组中存储的数据类型。数组中的所有元素必须属于相同的数据类型,数组中所有元素在内存中连续存储。 数组本身也是一种引用数据类型,数组的长度一旦确定之后,数组的长度是不可变的。     3.数组名只是引用,指向堆中创建的数组对象,该对象保存一组其它引用或直接值。 备注:variable变量,primitive主数据类型,java等编程语言中的默认基本数据类型,如:int、long等. 声明、创建数组     1.告诉系统数据类型是什么     2.语法:         数据类型[] 数组名;(就是栈中那个引用变量,通过数组名就可以访问数组中的元素) 数组的创建     为数组分配内存空间,通过new操作符的使用。 声明并创建数组     数据类型[] 数组名 = new 数据类型[大小]; 数组特点:     1.数组有一个字段length,表示此数组对象可以存储多少元素,即数组长度;length不是实际保存的元素个数。     2.[]是访问数组对象成员的唯一方式     3.对象数组保存的是引用,基本类型数组直接保存基本类型的值     4.新生成的数组对象,其中所有的引用自动初始化为null,基本类型数组成员有各自的默认值(数值型自动初始化为0,字符型为0,布尔型为false) 初始化数组并赋值     1.通过下标来进行赋值 array[0] = 1;     2.通过for循环进行统一遍历     for (int i = 0; i < array.length; i++) {         System.out.println(array[i]);     } 常用数组查找算法     1.线性查找法:         它又称为顺序查找,在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。     例1:查找指定的数在数组中出现的位置,找到返回下标,找不到返回-1.         public class Demo {             public static void main(String[] args) {                 Scanner input = new Scanner(System.in);                 int[] array = {10,100,80,50,70,60,90};                 System.out.println("请输入要查找的数:");                 int number = input.nextInt();                                  int index = -1;                 for (int i = 0; i < array.length; i++) {                     if (array[i] == number) {                         index = i;                         break;                     }                     if (i == array.length - 1) {                         System.out.println("你要查找的数不存在!");                     }                 }                 if (index != -1) {                     System.out.println("你要查找的数在数组中的下标为:" + index);                 }                 input.close();             }         }     例2.求数组中的最大值、最小值         public class Demo {             public static void main(String[] args) {                 int[] array = {10,100,80,50,70,60,90};                 int max = array[0];                 int min = array[0];                 for (int i = 0; i < array.length; i++) {                     if (max < array[i]) {                         max = array[i];                     }                     if (min > array[i]) {                         min = array[i];                     }                 }                 System.out.println("最大值为:" + max);                 System.out.println("最小值为:" + min);             }         }     2.二分查找法         它又称之为折半查找法。将数组中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将数组分成前后两个子数组, 如果中间位置记录的关键字大于查找关键字,则进一步查找前一子数组,否则进一步查找后一子数组。重复以上过程,直到找到或找不到为止。         public class Demo {             public static void main(String[] args) {                 Scanner input = new Scanner(System.in);                 int[] array = {10, 20, 30, 50, 70, 80, 90, 100};                 System.out.println("请输入要查找的数:");                 int number = input.nextInt();                 int index = -1;                 int start = 0;                 int end = array.length - 1;                 int middle = 0;                 while (start <= end) {                     middle = (start + end)/2;                     if (number == array[middle]) {                         index = middle;                         break;                     }                     if (number > array[middle]) {                         start = middle + 1;                     }                     if (number < array[middle]) {                         end = middle - 1;                     }                                      }                 if (index != -1) {                     System.out.println("你要查找的数在数组中的下标为:" + index);                 } else {                     System.out.println("你要查找的数不存在!");                 }                 input.close();             }         }     3.冒泡排序法         比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。最后的元素应该会是最大的数。     针对除了最后一个元素以外所有的元素重复以上的步骤。直到没有任何一对数字需要比较。     public class Demo {         public static void main(String[] args) {             int[] array = {10, 20, 60, 50, 70, 80, 90, 100};             // N个数比较的轮数为N-1             for (int i = 0; i < array.length - 1; i++) {                 // 每轮比较的次数为N-1-i                 for (int j = 0; j < array.length - 1 - i; j++) {                     // 比较相邻的两个数,小数冒泡,大数沉底                     if (array[j] > array[j + 1]) {                         // 两个数做交换                         int temp = array[j];                         array[j] = array[j + 1];                         array[j + 1] = temp;                     }                 }             }             // 输出结果             for (int i = 0; i < array.length; i++) {                 System.out.print(array[i] + " ");             }         }     }
转载请注明原文地址: https://www.6miu.com/read-2631478.html

最新回复(0)