1.数组元素的赋值(杨辉三角、回形数等)

1-1杨辉三角

  1. /*【提示】
  2. 1. 第一行有 1 个元素, 第 n 行有 n 个元素
  3. 2. 每一行的第一个元素和最后一个元素都是 1
  4. 3. 从第三行开始, 对于非第一个元素和最后一个元
  5. 素的元素。即:
  6. yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
  7. */
  8. package day07;
  9. public class YangHui {
  10. public static void main(String[] args) {
  11. //1.声明并初始化二维数组
  12. int [][]yanghui =new int [10][];
  13. // yanghui[0][0]=1;
  14. // yanghui[1][0]=1;
  15. // yanghui[1][1]=1;
  16. //2.给数组的元素赋值
  17. for(int i=0;i<yanghui.length;i++){
  18. yanghui[i]=new int [i+1];
  19. //给首末元素赋值
  20. yanghui[i][0]=1;
  21. yanghui[i][i]=1;
  22. //给非首末元素赋值
  23. for(int j=1;j<yanghui[i].length-1;j++)
  24. yanghui[i][j] = yanghui[i-1][j-1] + yanghui[i-1][j];
  25. }
  26. //遍历数组
  27. for(int i=0;i<yanghui.length;i++){
  28. for(int j=0;j<yanghui[i].length;j++){
  29. System.out.print(yanghui[i][j]+" ");
  30. }
  31. System.out.println();
  32. }
  33. }
  34. }

2.求数值型数组中元素的最大值、最小值、平均数、总和等


  1. package day07;
  2. /*定义一个int型的一维数组,包含10个元素,分别赋一些随机整数,
  3. 然后求出所有元素的最大值,最小值,和值,平均值,并输出出来。
  4. 要求:所有随机数都是两位数。
  5. [10,99]
  6. 公式:(int) Math.random()*90+10;
  7. */
  8. public class ArrayTest {
  9. public static void main(String[] args) {
  10. int []arr=new int[10];
  11. for(int i=0;i<arr.length;i++){
  12. arr[i]=(int)(Math.random()*90+10);
  13. }
  14. for(int i=0;i<arr.length;i++){
  15. System.out.print(arr[i]+" ");
  16. }
  17. System.out.println();
  18. //求数组元素的最大值
  19. int maxValue=arr[0];
  20. for(int i=0;i<arr.length;i++){
  21. if(maxValue<arr[i]){
  22. maxValue=arr[i];
  23. }
  24. }
  25. System.out.println("最大值为:"+maxValue);
  26. //求数组元素的最小值
  27. int minValue=arr[0];
  28. for(int i=0;i<arr.length;i++){
  29. if(minValue>arr[i]){
  30. minValue=arr[i];
  31. }
  32. }
  33. System.out.println("最小值为:"+minValue);
  34. //求数组元素的总和
  35. int sum=0;
  36. for(int i=0;i<arr.length;i++){
  37. sum+=arr[i];
  38. }
  39. System.out.println("总和为:"+sum);
  40. //求数组元素的平均数
  41. float average ;
  42. average=(float) (sum*1.0/10);
  43. System.out.println("平均值为:"+average);
  44. }
  45. }

3. 数组的复制、反转、查找(线性查找、二分法查找)

3-1复制


  1. /*使用简单数组
  2. (1)创建一个名为ArrayTest的类,在main()方法中声明array1和array2两个变量,
  3. 他们是int[]类型的数组。
  4. (2)使用大括号{},把array1初始化为8个素数:2,3,5,7,11,13,17,19。
  5. (3)显示array1的内容。
  6. (4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值
  7. (如array[0]=0,array[2]=2)。打印出array1。
  8. 思考:array1和array2是什么关系? array1和array2地址值相同,都指向了堆空间的唯一一个数组实体
  9. 拓展:修改题目,实现array2对array1数组的复制
  10. */
  11. package day07;
  12. public class Arrayexer {
  13. public static void main(String[] args) {
  14. int[]array1,array2;
  15. array1= new int []{2,3,5,11,13,17,19};
  16. //显示array1的内容
  17. for(int i=0;i<array1.length;i++){
  18. System.out.print(array1[i]+"\t");
  19. }
  20. //复制array2变量等于array1
  21. //不能称之为数组得到复制
  22. array2=array1;
  23. //赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值
  24. for(int i=0;i<array2.length;i++){
  25. if(i%2==0){
  26. array2[i]=i;
  27. }
  28. }
  29. System.out.println();
  30. //打印出array1
  31. for(int i=0;i<array1.length;i++){
  32. System.out.print(array1[i]+"\t");
  33. }
  34. }
  35. }

3-2 反转

  1. package day07;
  2. public class ArrayExer2 {
  3. public static void main(String[] args) {
  4. String[]arr =new String[]{"JJ","DD","MM","GG","AA","BB"};
  5. //数组的复制
  6. String []arr1 =new String[arr.length];
  7. for(int i=0;i<arr1.length;i++){
  8. arr1[i]=arr[i];
  9. }
  10. //数组的反转
  11. for(int i=0;i<arr1.length;i++){
  12. System.out.print(arr1[i]+" ");
  13. }
  14. System.out.println();
  15. for(int i=0;i<arr1.length;i++){
  16. System.out.print(arr1[arr1.length-i-1]+" ");
  17. }
  18. }
  19. }

3-3 二分法查找

  1. //二分法查找:
  2. // 前提,所要查找的数组必须有序
  3. int [] arr2 =new int []{-99,-54,-2,0,2,33,43,256,999};
  4. int number=34;
  5. int head=0;
  6. int end =arr2.length-1;
  7. boolean isFlag1=true;
  8. while(head <= end){
  9. int middle = (head + end) / 2;
  10. if(arr2[middle] == number){
  11. System.out.println("找到指定的元素,索引为:" + middle);
  12. isFlag = false;
  13. break; }else if(arr2[middle] > number){
  14. end = middle - 1;
  15. }else{//arr3[middle] < number
  16. head = middle + 1;
  17. } }
  18. if(isFlag){
  19. System.out.println("未找到指定的元素");
  20. }
  21. }

4. 数组元素的排序算法

4-1 冒泡排序

  1. package day07;
  2. public class BuubbleSortTest {
  3. /*
  4. *数组的冒泡排序 的实现
  5. *
  6. */
  7. public static void main(String[] args) {
  8. int[] arr=new int[]{43,32,76,98,-90,-67,-32,33,99};
  9. //冒泡排序
  10. for(int i=0;i<arr.length-1;i++){
  11. for(int j=0;j<arr.length-1-i;j++){
  12. if(arr[j]>arr[j+1]){
  13. int temp=arr[j];
  14. arr[j]=arr[j+1];
  15. arr[j+1]=temp;
  16. }
  17. }
  18. }
  19. for(int i=0;i<arr.length;i++){
  20. System.err.print(arr[i]+"\t");
  21. }
  22. }
  23. }