一维数组的应用&&冒泡排序

    科技2025-10-19  10

    1.一维数组的应用

    数组最值问题

    分析:假设思想 1)将数组中第一个元素arr[0]看为最大值 2)从角标1开始遍历其他元素 2.1)分别将当前遍历的元素依次和最大值进行比较 如果当前元素大于最大值 将当前元素内容赋值max变量 public static int getMin(int[] arr){ //参照物 int min = arr[0] ;//假设第一个元素是最小值 //从角标1开始遍历其他元素 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] ; //从角标1开始遍历其他元素 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){ //start:表示开启索引值 //end:表示最大索引值 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){ //遍历数组:保证角标值小于数组长度/2 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 ++){ //x = 0 ; 1 2,3 控制比较的次数 for(int y = 0 ; y < arr.length-1-x ; y++){//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] ; } }
    Processed: 0.013, SQL: 8