数组的常见操作

来源:互联网 发布:编程怎么能学好 编辑:程序博客网 时间:2024/06/05 15:59

一、遍历——  for循环

int arr[] ={5,6,9,48,7,35,2};for(int i=0;i<arr.length;i++){System.out.println(arr[i]);}
二、获取数组中的最大值

<span style="color:#ff0000;">//方法一:求数组中元素最大值   交换元素</span>public static int getArrayMax1(int[] x){int max=x[0];for(int i=1;i<x.length;i++){if(x[i]>max)max=x[i];}return max;}<span style="color:#ff0000;">//方法二:求数组中元素最大值  交换元素索引</span>public static int getArrayMax2(int[] x){int maxIndex=0;for(int i=1;i<x.length;i++){if(x[i]>x[maxIndex])maxIndex=i;}return x[maxIndex];}</span>
三、选择排序

<span style="color:#ff0000;">//选择排序的方式一</span>public static void selectSort(int arr[]){for(int i=0;i<arr.length-1;i++){for(int j=i+1;j<arr.length;j++){if(arr[i] > arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}} }}<span style="color:#ff0000;">//选择排序方法二(推荐使用)</span>public static void selectSort1(int arr[]){for(int i=0;i<arr.length-1;i++){int index=i;for(int j=i+1;j<arr.length;j++){if(arr[index] > arr[j]){index = j;}}if(index != i){int temp = arr[index];arr[index] = arr[i];arr[i] = temp;}}}

四、冒泡排序

1、内层for循环中arr.length -1表示防止数组越界

2、内层for循环arr.length-i表示后边的额i元素已经确定,不用比较

<span style="color:#ff0000;">//冒泡排序方式一(面试使用)</span>public static void boubleSort1(int arr[]){for(int i=0;i<arr.length-1;i++){for(int j=0;j<arr.length -1 -i;j++){if(arr[j] > arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}<span style="color:#ff0000;">//冒泡排序方式二</span>public static void boubleSort2(int arr[]){for(int i=arr.length -1;i>0;i--){for(int j=0;j<i;j++){if(arr[j] > arr[j+1]){int temp = arr[j];arr[j] = arr[j+1];arr[j+1] = temp;}}}}

五、二分查找

数组必须有序(从大到小或从小到大)

<span style="color:#ff0000;">//方法一</span>public static int halfSearch(int[] arr,int num){int min,max,mid;min=0;max=arr.length-1;mid = (min+max)/2;while(arr[mid]!=num)  //如果num=mid,那么跳过循环,直接返回mid的下标即是所查数的下标{if(num>arr[mid])min=mid+1;  //最小值移动到中间值的右侧,即中间值加1else if(num<arr[mid])max=mid-1;if(min>max)return -1;mid=(max+min)/2; //最大值移动到中间值的左侧,即中间值减1}return mid;}<span style="color:#ff0000;">//方法二</span>public static int halfSearch1(int arr[],int num){int min,max,mid;min=0;max=arr.length-1;while(min<=max)  {mid=(min+max)/2;if(arr[mid]<num)min=mid+1;else if(arr[mid]>num)max=mid-1;elsereturn mid;}return -1;}/*<span style="color:#ff0000;">面试题:给定一个有序的数组,如果往这个数组中存储一个元素,并保证这个数组是有序的,那么这个元素的存储脚标如何获取</span>*/public static int halfInsert(int[] arr,int num){int min,max,mid;min=0;max=arr.length-1;mid = (min+max)/2;while(arr[mid]!=num)  {if(num>arr[mid])min=mid+1;  //最小值移动到中间值的右侧,即中间值加1else if(num<arr[mid])max=mid-1;if(min>max)<span style="color:#ff0000;">return min;</span>  <span style="color:#ff0000;">//min>max表示num没有在数组中(与查找数据相似,把-1换成min即可)</span>mid=(max+min)/2; //最大值移动到中间值的左侧,即中间值减1}return mid;}





1 0
原创粉丝点击