我们就写几个函数(几个段子)有不同功能,可以对数组 遍历,获取最值,排序,查找
数组:就是同一类型数据的集合 一维格式 元素类型[] 数组名 = new 元素类型[数组长度] 或者 new 元素类型[]{元素1·元素2···}
static void BianLi(int[] arr){for(int x=0;x<arr.length;x++){操作arr[x]}}
static void Max(int[] arr){int max=arr[0];遍历arr{if(arr[x]>max){max=arr[x]}} return max}
static void Min(int[] arr){int min=0;遍历arr{if(arr[x]<arr[min]){min=x}} return arr[min]}
static void PanXu(int[] arr){遍历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}
这是冒泡排序 就是一个数和后面一个数比 见到大的就交换位置 然后后面这数再和它后面的数比 以此类推 最后一个数就是最小的了;
static void PanXu(int[] arr){遍历arr for(int x=0;x<arr.length-1;x++)
for ( int y=x+1;y<arr.length;y++)
int temp=arr[x];arr[x]=arr[y];arr[y]=temp;}
这是选择排序 第一个数和后面一个的比 见到大的就交换位置 然后第一个数在和更后面的比 见到大的再交换位置 选出来的第一就是最大的
先排序成有序数组,折半查找 min=0 max=arr.length-1 mid=(max+min)/2
while(arr[mid!=key])看数组最中间的数是否要找的数
if(key>arr[mid]) min=mid+1 如果key比中间的数大 就从后半边查找 依然用折半法
if(key<arr[mid]) max=mid-1 如果key比中间的数小 就从前半边查找 依然用折半法
return min;
|
|