Java教程

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

本文主要是介绍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---(二维数组以及基本算法)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!