黑马程序员--数组

来源:互联网 发布:2016莱特币挖矿软件 编辑:程序博客网 时间:2024/06/06 02:46

----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------    

 

 

数组
  • 数组的定义
数组的概念:
  同一种类型数据的集合,其实数组就是一个容器。
数组的好处:
  可以自动给数组中的元素从0开始编号。这样操作起来就更方便。

/*int型数组默认值是0double  型数组默认值是0.0float   型数组默认值是0.0fboolean 型数组默认值是flase*/class ArrayDemo  {public static void main(String[] args) {int[] arr = new int[3];//元素类型[] 数组名 = new 元素类型[元素个数或数组长度];arr[0] = 1;System.out.println(arr[0]);arr = null;}}


  • 数组操作常见问题
class ArrayDemo2 {public static void main(String[] args) {//int[] arr = new int[2];//第一种:和下面定义方式是一样的//int arr[] = new int[2];int[] arr = new int[]{1,2};//第二种:下面是简写//int[] arr = {1,2};System.out.println(arr[1]);arr = null;System.out.println(arr[1]);//ArrayIndexOutOfBoundsException: 3:操作数组时,访问到了数组中不存在的角标。//NullPointerException:空指针异常:当引用没有任何指向值为null的情况,该引用还在用于操作实体。}}
class ArrayDemo3{public static void main(String[] args){int[] arr = new int[]{1,2,3,4,5};int sum = 0;//数组的操作://获取int类型数组中的和。//数组中有一个属性可以直接获取到数组元素个数。length.//使用方式:数组名称.length = for(int x=0;x<arr.length;x++) {sum += arr[x]; System.out.println(arr[x]);}System.out.println(sum+"\n"+arr);printArray(arr);}//打印出数组中的元素。public static void printArray(int[] arr){for (int x=0; x<arr.length; x++){if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.println(arr[x]);}}}

  • 数组的常见操作
class ArrayDemo3{public static void main(String[] args){int[] arr = new int[]{1,2,3,4,5};int sum = 0;//数组的操作://获取int类型数组中的和。//数组中有一个属性可以直接获取到数组元素个数。length.//使用方式:数组名称.length = for(int x=0;x<arr.length;x++) {sum += arr[x]; System.out.println(arr[x]);}System.out.println(sum+"\n"+arr);printArray(arr);}//打印出数组中的元素。public static void printArray(int[] arr){for (int x=0; x<arr.length; x++){if(x!=arr.length-1)System.out.print(arr[x]+",");elseSystem.out.println(arr[x]);}}}


  • 数组的练习
 

 /*获取数组中的最大值。。。。获取最小值。。。*/class ArrayDemo5 {public static void main(String[] args) {int[] arr = new int[]{1,3,5,9,7,0};int max = getMax(arr);int min = getMin(arr);System.out.println(max);System.out.println(min);}public static int getMax(int arr[])//获取最大值。{int max = arr[0];for (int x=1; x<arr.length; x++){if (arr[x]>max)max = arr[x];}return max;}public static int getMin(int arr[])//获取最小值。{int min = 0;for (int x=1; x<arr.length; x++){if (arr[x]<arr[min])min = x;}return arr[min];}}

/*对给定数组进行排序。4,8,0,7,5,1,3第一种:选择排序 selection sort每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完。第二种:冒泡排序 bubble sort它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端,故名。*/class ArrayDemo6{public static void main(String[] args) {int[] arr = new int[]{4,8,0,7,5,1,3};printArray(arr);//selectionSort(arr);//printArray(arr);bubbleSort(arr);printArray(arr);}public static void printArray(int[] arr)//打印数组。{for (int x=0; x<arr.length; x++){System.out.print(arr[x]+"  ");if (x==arr.length-1){System.out.println();}}}public static void selectionSort(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[y];arr[y]=arr[x];arr[x]=temp;}}}}public static void bubbleSort(int[] arr)//冒泡排序{for (int x=1; x<arr.length; x++ ){for (int y=0; y<arr.length-x; y++){if (arr[y]>arr[y+1]){int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}}}

/*折半查找:必须是有序的。 */class ArrayDemo4  {public static void main(String[] args) {int[] arr = new int[]{1,3,5,7,9};int index = halfSearch(arr,6);System.out.println("所要找的数的角标应该是在:"+(index-1)+"和"+index+"之间");}public static int getIndex(int[] arr,int key){for (int x=0; x<arr.length; x++){if (key==arr[x]){return x;}}return -1;}public static int halfSearch(int[] arr,int key){int min = 0;int max = arr.length-1;int mid = (max+min)/2;while(true){if(key<arr[mid]){max = mid-1;mid = (max+min)/2;}if(key>arr[mid]){  min = mid+1;mid = (max+min)/2;}if(key==arr[mid]){return mid;}if(mid<min||mid>max)break;}return min;}}




  • 数组中的数组

/* 二维数组的初始化方式:*/class Array2Demo {public static void main(String[] args) {//定义名称为arr的二维数组。二维数组中有3个一维数组。//每一个一维数组中有3个元素。int[][] arr = new int[3][3];  //第一种初始化方式int[][] arr1 = new int[3][];  //第二种初始化方式//System.out.println(arr1[1]);  //nullarr1[0] = new int[3];arr1[1] = new int[2];arr1[2] = new int[1];int[][] arr2 = new int[][]{{1,2},{1,2,3},{1,2,3}};//第三种初始化方式//上一种的简写(常用方式):int[][] arr2 = {{1,2},{1,2,3},{1,2,3}};System.out.println(Array2Sum(arr2));}public static int Array2Sum(int arr[][]){int sum = 0;for (int x=0; x<arr.length; x++){for (int y=0; y<arr[x].length; y++){sum += arr[x][y];}}return sum;}}/*二维数组的练习:int[] x; int x[];int[][] y; int y[][]; int[] y[];int[] x,y[];//x一维,y二维。int[] x;int[] y[];a.x[0] = y;//errorb.y[0] = x;//yesc.y[0][0] = x;//errord.x[0][0] = y;//errore.y[0][0] = x[0];//yesf.x=y;//error*/



 ----------------------ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------

0 0
原创粉丝点击