java学习day20---(二维数组以及基本算法)

一、解耦思想

耦合:一个方法完成了两个功能

这是不好的编码方法,当需要修改一个功能,需要牵扯到整个方法

解耦:每一个功能都是独立存在的

每个功能都可以两两组合,完成更强大的功能,修改和维护都是独立的

日常写代码一定要往低耦合写,更便于维护

返回值的设置:看方法有没有产生新的对象,产生了就返回

二、数组

数组拷贝和打印

数组拷贝

System.arrayCopy()
   
public static String arraryCopy(int[] srcArr,int stratIndex,int length,int[] destArr,int destIndex){
   for(int i=stratIndex;i<stratIndex+length;i++){
       destArr[destIndex]=srcArr[i];
       destIndex++;
  }
   return destArr;
}

数组打印

Arrays.toString()
   
public static String toString(int[] arr){
   String s="["
       for(int i=0;i<arr.length;i++){
           if(i==arr.length-1){
               s+=arr[i];
          }else{
               s+=(arr[i]+",");
          }
      }
   s+="]";
   return s;
}

二维数组

每个元素是一个一维数组的一维数组是二维数组

语法

动态初始化:类型[] [] 变量名=new 类型[外层长度] [内层长度];

静态初始化:类型[] [] 变量名={{2},{2,3},{4,5,2}};

静态数组每个内层数组长度可以不一样

二维数组的遍历

for循环嵌套遍历

for(int i=0;i<arr.length;i++){  //外层循环
   for(j=0;j<arr[i].length;j++){   //内层循环
      System.out.print(arr[i][j]);
  }
      System.out.println();
}

二维数组作为一个了解

三、算法

算法概念

概念:对于数据的计算方式方法

算法不属于编程语言,属于数学的范畴,算法是前人总结出来的解决某种固定场景问题的方式方法

算法需要数据,算法会根据数据的存储结构来进行计算

算法应用场景

1.计算机底层离不开算法

2.算法是无数的,一些常用算法都被封装了,因为都是固定的

为何要学习算法

培养逻辑思维

冒泡排序

将相邻的两个元素进行比较,将较大的元素往右放,较小的元素往左放

for(int i=0;i<arr.length-1;i++){
  for(int j=0;j<arr.length-1-i;j++){
     if(arr[j]>arr[j+1]){
      int temp=arr[j];
      arr[j]=arr[j+1];
      arr[j+1]=temp;
    }
  }
}

选择排序

//设定一个变量用来临时存储最小值的索引,假定arr[0]是最小值,则索引值 temp=0,将之后1~arr.length-1的值进行比较,小于arr[0],就把索引值temp指向这个数值的索引,最后arr[temp]就是最小的数,然后在用arr[0]与arr[temp]进行交换。反复循环就排列好了,交换次数最多arr.length-1次。

for(int i=0;i<arr.length-1;i++){
  int x=i;
  for(int j=i+1;j<length;j++){
     if(arr[x]>arr[j]){
        x=j;
    }
  }
  if(i!=x){
   int y;
   y=arr[i];
   arr[i]=arr[x];
   arr[x]=y;
  }
}

二分查找

前提:数组有序排列

然后对半查找

public static int getIndex(int[] arr,int number){
int strat=0;
int end=arr.length-1;
int som=(strat+end)/2;
while(strat<=end){
if(number==arr[som]){
return som;
}else if(number>arr[som]){
strat=som+1;
}else {
end=som-1;
}
som=(strat+end)/2;
}
return -1;
}

上一篇:java_day20


下一篇:day20