1.一维数组的应用
数组最值问题
分析:假设思想
1)将数组中第一个元素arr[0]看为最大值
2)从角标1开始遍历其他元素
2.1)分别将当前遍历的元素依次和最大值进行比较
如果当前元素大于最大值
将当前元素内容赋值max变量
public static int getMin(int[] arr){
int min = arr[0] ;
for(int x =1 ; x < arr.length ; x ++){
if(arr[x] < min){
min = arr[x] ;
}
}
return 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 ;
}
数组的元素逆序
int[] arr = {13,87,65,24,57} ;
中心思想:
将13 arr[0]--57 arr[arr.length-1]互换
将87 arr[1]---24 arr[arr.length-1-1]互换....
...
保证 数组的长度/2
public static void reverse2(int[] arr){
for(int start = 0 ,end = arr.length-1 ; start<end ; start ++,end --){
int temp = arr[start] ;
arr[start] = arr[end] ;
arr[end] = temp ;
}
}
public static void reverse(int[] arr){
for(int x = 0 ; x < arr.length/2 ; x ++){
int temp = arr[x] ;
arr[x] = arr[arr.length-1-x] ;
arr[arr.length-1-x] = temp ;
}
}
public static void printArray(int[] arr){
System.out.print("[") ;
for(int x = 0 ; x < arr.length ; x ++){
if(x == arr.length-1){
System.out.println(arr[x]+"]") ;
}else{
System.out.print(arr[x] +", ") ;
}
}
}
}
数组元素查表法
数组名称[index:角标]访问元素
假设:
字符串数组: 数据类型[] 数组名称 = new 数据类型[]{元素1,....} ;
String[] strs = {"星期一","星期二",
"星期三","星期四","星期五","星期六","星期天"} ;
需求:键盘录入数据:查询当前星期几
import java.util.Scanner ;
class ArrayTest4{
public static void main(String[] args){
String[] strs = {"星期一","星期二",
"星期三","星期四","星期五","星期六","星期天"} ;
Scanner sc = new Scanner(System.in) ;
System.out.println("请您输入一个数据(0-6):") ;
int index = sc.nextInt() ;
System.out.println("你要查询的是:"+strs[index]) ;
}
}
2.冒泡排序
冒泡排序思想
两两比较,将较大的值往后放;第一次比较完毕,最大值就出现在最大索引处!
依次这样比较:
规律:
第一次:有0个不比
第二次:有1个不比
...
...
比较的次数:数组长度-1次
public static void bubboleSort(int[] arr){
for(int x = 0 ; x < arr.length-1 ; x ++){
for(int y = 0 ; y < arr.length-1-x ; y++){
if(arr[y] > arr[y+1]){
int temp = arr[y] ;
arr[y] = arr[y+1] ;
arr[y+1] = temp ;
}
}
}
}
3.(二维数组)杨辉三角
1)行数和列数:都是6 ----->数据可以采用键盘录入!
二维数组的定义格式:
格式1:int[][] arr = new int[num][num] ;
2)任何一行的第一列和最后一列都是1
3)从第三行开始,中间的数据的值等于上一行的前一列+上一行的本列之和
for(int x = 2 ;x < arr.length ; x ++){
//内层循环
/*
y从1开始, 当前任何一行的第一列已经赋值1
y<=x-1 : 最后一列也赋值为1
*/
for(int y = 1 ; y <=x -1; y ++){
//中间的数据的值等于上一行的前一列+上一行的本列之和
arr[x][y] = arr[x-1][y-1] + arr[x-1][y] ;
}
}
转载请注明原文地址:https://blackberry.8miu.com/read-41973.html