黑马程序员 --- 数组

来源:互联网 发布:沙龙 陈奕迅 知乎 编辑:程序博客网 时间:2024/06/03 15:27

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


数组的定义:

同一种类型数据的集合。其实数组就是一个容器。

可以自动给数组中的元素从0开始编号,方便操作这些元素。

格式1:
元素类型[] 数组名= new 元素类型[元素个数或数组长度];
示例:int[] arr = new int[5];
格式2:
元素类型[] 数组名= new 元素类型[]{元素,元素,……};
int[] arr = new int[]{3,5,1,7};
int[] arr = {3,5,1,7}

获取数组中的最大最小值;

/*给定一个数组{5,1,6,4,2,8,9}。1,获取数组中的最大值,以及最小值。*/class ArrayTest {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 getMax_2(int[] arr){int max = 0;for(int x=1; x<arr.length; x++){if(arr[x]>arr[max])max = x;}return arr[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];}//获取double类型数组的最大值。因为功能一致,所以定义相同函数名称。以重载形式存在。/*public static double getMax(double[] arr){}*/public static void main(String[] args){int[] arr ={5,1,6,4,2,8,9};int max = getMax_2(arr);int min = getMin(arr);System.out.println("max="+max);System.out.println("min="+min);//boolean[] ar = new boolean[3];//System.out.println(ar[1]);}}

折半查找

import java.util.*;class ArrayTest4 {public static void main(String[] args) {//int[] arr = {3,2,1,5,4,2,9};//int index = getIndex(arr,2);//System.out.println("index="+index);int[] arr = {2,4,5,7,8,19,32,45};//8int index = getIndex_2(arr,190);System.out.println("index="+index);//int x = Arrays.binarySearch(arr,190);//java提供好的一个进行折半查找的功能。开发时使用这个。//System.out.println("x="+x);}public static int getIndex_2(int[] arr,int key){int min = 0,max = arr.length-1,mid;while(min<=max){mid = (max+min)>>1;if(key>arr[mid])min = mid + 1;else if(key<arr[mid])max = mid - 1;elsereturn mid;}return min;}/*折半的第二种方式。*/public static int halfSearch_2(int[] arr,int key){int min = 0,max = arr.length-1,mid;while(min<=max){mid = (max+min)>>1;if(key>arr[mid])min = mid + 1;else if(key<arr[mid])max = mid - 1;elsereturn mid;}return -1;}/*折半查找。提高效率,但是必须要保证该数组是有序的数组。*/public static int halfSearch(int[] arr,int key){int min,max,mid;min = 0;max = arr.length-1;mid = (max+min)/2;while(arr[mid]!=key){if(key>arr[mid])min = mid + 1;else if(key<arr[mid])max = mid - 1;if(min>max)return -1;mid = (max+min)/2;}return mid;}//定义功能,获取key第一次出现在数组中的位置。如果返回是-1,那么代表该key在数组中不存在。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 class ArrayDemo5 {public static void main(String[] args){int[] arr={3,6,7,9,1,4};//定义一个数组selectSort(arr);//调用排序方法printArray(arr);//打印排序后数组}public static void selectSort(int[] arr)//定义一个方法,用于元素从小到大排序{for(int x=0;x<arr.length-1;x++)//定义for循环从数组第一个元素开始和后面每个元素比较{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 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]+"]");}}}

数组排序——冒泡排序
public class BubbleSort {public static void main(String[] args){int [] arr={5,2,7,1,6};//定义一个数组BubSort(arr);//调用冒泡排序printArray(arr);//打印排序后数组}public static void BubSort(int[] arr)//定义冒泡排序方法{for(int x=0;x<arr.length-1;x++){for(int y=0;y<arr.length-x-1;y++){if(arr[y]>arr[y+1])//如果前面元素大于后面的元素则置换{int temp=arr[y];arr[y]=arr[y+1];arr[y+1]=temp;}}}}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]+"]");}}}


二维数组[][]
格式1:int[][] arr = new int[3][2];
定义了名称为arr的二维数组
二维数组中有3个一维数组
每一个一维数组中有2个元素
一维数组的名称分别为arr[0], arr[1], arr[2]
给第一个一维数组1脚标位赋值为78写法是:arr[0][1] = 78;
格式2:int[][] arr = new int[3][];
二维数组中有3个一维数组
每个一维数组都是默认初始化值null
可以对这个三个一维数组分别进行初始化
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
格式3:int[][] arr = {{3,8,2},{2,7},{9,0,1,6}};
定义一个名称为arr的二维数组
二维数组中的有三个一维数组
每一个一维数组中具体元素也都已初始化
第一个一维数组arr[0] = {3,8,2};
第二个一维数组arr[1] = {2,7};
第三个一维数组arr[2] = {9,0,1,6};
第三个一维数组的长度表示方式:arr[2].length;
注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。