[关闭]
@Hubertoo 2017-07-17T05:01:31.000000Z 字数 3804 阅读 773

Fundamental.Unit05

达内


知识体系

循环结构

数组

什么是数组

数组的定义,初始化,访问,复制,排序

定义

初始化

访问

复制

  1. System.arraycopy(arr, 0, arr2, 0, arr.length);
  2. System.arraycopy(arr, 0, arr3, 0, arr.length);
  3. // arr3 = arr2 = arr;

排序

经典案例

打印九九乘法表

  1. package day01;
  2. public class MultiplicationTable {
  3. public static void main(String[] args) {
  4. //i变量用于控制行数
  5. for(int i=1; i<10; i++){
  6. //j变量用于控制每行中参与计算的最大值:与行数相同
  7. for(int j=1; j<i+1; j++){
  8. System.out.print(j + " * " + i + " = " + i*j + "\t");
  9. }
  10. //每行输出完毕需换行
  11. System.out.println();
  12. }
  13. }
  14. }

求数组中元素最大值,并扩容放在最后一位

  1. package day01;
  2. import java.util.Arrays;
  3. public class MaxOfNumPlus {
  4. public static void main(String[] args) {
  5. int[] arr = new int[10];
  6. // for(int i : arr){
  7. // i = (int)(Math.random() * 100 + 1);
  8. // }
  9. for(int i=0; i<arr.length; i++){
  10. arr[i] = (int)(Math.random() * 100 + 1);
  11. }
  12. System.out.println("排序前:" + Arrays.toString(arr));
  13. //arr复制到arr2,然后arr2排序找到最大值,然后将最大值放在arr扩容之后的最后一位
  14. // int [] arr2 = new int[10];
  15. // System.arraycopy(arr, 0, arr2, 0, arr.length);
  16. // Arrays.sort(arr2);
  17. // int max‘ = arr2[arr2.length -1];
  18. //
  19. // arr = Arrays.copyOf(arr, arr.length + 1);
  20. // arr[arr.length - 1] = max;
  21. //
  22. // System.out.println("排序后:" + Arrays.toString(arr));
  23. //一般方法实现
  24. int [] arr2 = new int[10];
  25. System.arraycopy(arr, 0, arr2, 0, arr.length);
  26. for(int i=1; i<arr.length; i++){
  27. if(arr2[0] < arr2[i]){
  28. arr2[0] = arr2[i];
  29. }
  30. }
  31. int max = arr2[arr2.length -1];
  32. arr = Arrays.copyOf(arr, arr.length + 1);
  33. arr[arr.length - 1] = arr2[0];
  34. System.out.println("排序后:" + Arrays.toString(arr));
  35. }
  36. }

冒泡排序算法实现

  1. package day01;
  2. import java.util.Arrays;
  3. public class BubbleSort {
  4. public static void main(String[] args) {
  5. int[] arr = new int[10];
  6. for(int i=0; i<arr.length; i++){
  7. arr[i] = (int)(Math.random() * 100 + 1);
  8. }
  9. System.out.println("排序前:" + Arrays.toString(arr));
  10. for(int i=0; i<arr.length; i++){
  11. for(int j=0; j<arr.length -1 -i; j++){
  12. if(arr[j] > arr[j+1]){
  13. int t = arr[j];
  14. arr[j] = arr[j+1];
  15. arr[j+1] =t;
  16. }
  17. }
  18. }
  19. System.out.println("排序后:" + Arrays.toString(arr));
  20. }
  21. }

不使用实现两个数的互换

  1. package day01;
  2. public class Test {
  3. public static void main(String[] args) {
  4. int a=3 ,b=1;
  5. a = a+b;
  6. b = a-b;
  7. a = a-b;
  8. System.out.println(a + ",,," + b);
  9. }
  10. }

课后作业

质数问题

找出2到用户输入的数之间的所有质数

  1. package day01;
  2. import java.util.Scanner;
  3. public class PrimeNumProblem {
  4. public static void main(String[] args) {
  5. Scanner scan = new Scanner(System.in);
  6. System.out.println("输入最大范围值:");
  7. int num = scan.nextInt();
  8. //i是2到num之间的数,要判断是否是质数然后输出
  9. for(int i=3; i<num; i++){
  10. boolean flag = true;
  11. //j用来判断i是否是质数
  12. for(int j=2; j<i; j++){
  13. if(i % j == 0){
  14. flag = false;
  15. }
  16. break;
  17. }
  18. if(flag){
  19. System.out.println("质数是:"+i);
  20. }
  21. }
  22. }
  23. }

笔记

查出数组中最小元素,扩容后在第一位

  1. package day01;
  2. import java.util.Arrays;
  3. public class MinOfNumPlus {
  4. public static void main(String[] args) {
  5. int[] arr = new int[10];
  6. for(int i=0; i<arr.length; i++){
  7. arr[i] = (int)(Math.random() * 100 + 1);
  8. }
  9. System.out.println("排序前:" + Arrays.toString(arr));
  10. int [] arr2 = new int[10];
  11. int[] arr3 = new int[10];
  12. System.arraycopy(arr, 0, arr2, 0, arr.length);
  13. System.arraycopy(arr, 0, arr3, 0, arr.length);
  14. // arr3 = arr2 = arr;
  15. Arrays.sort(arr2);
  16. int min = arr2[0];
  17. arr = Arrays.copyOf(arr, arr.length + 1);
  18. System.arraycopy(arr3, 0, arr, 1, arr3.length);
  19. arr[0] = min;
  20. System.out.println("排序后:" + Arrays.toString(arr));
  21. }
  22. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注