杨辉三角 往有序数组插入元素

  

杨辉三角

import java.util.Scanner;

public class B {
  public static void main(String[] args) {
    int[][] array=new int[10][];
    for(int i=0;i<array.length;++i){
      array[i]=new int[i+1];
      for(int j=0;j<array[i].length;++j){
        if(j==0 || j==array[i].length-1){
          array[i][j]=1;
        }else{
          array[i][j]=array[i-1][j-1]+array[i-1][j];
        }
      }
    }

    for(int i=0;i<array.length;++i){
      for(int j=0;j<array[i].length;++j){
        System.out.print(array[i][j]+"\t");
      }
      System.out.println();
    }
  }
}

  

往有序数组插入元素

public class B{
  public static void main(String[] args){
    int[] b={1,2,4,5};
    int[] p=new int[b.length+1];
    int v=3;
    for(int i=0;i<b.length;++i){
      if(b[i] < v){
        p[i]=b[i];
      }else{
        p[i]=v;
        for(int j=i;j<b.length;++j){
          p[j++]=b[j];
        }
        break;
      }
    }
    b=p;
    for(int i=0;i<b.length;++i){
      System.out.print(b[i]+"\t");
    }
  }
}

  

上面的错误结果为

 

 

应该把p[j++]=b[j]               =>               p[j+1]=b[j]

 

寻找插入位置

public class V {
  public static void main(String[] args){
    int[] b={1,2,4,5};
    int[] p=new int[b.length+1];
    int v=3;
    int index=-1;
    for(int i=0;i<b.length;++i){
      if(v<=b[i]){
        index=i;
        break;  // require break
      }
    }
    if(index == -1){  // 待插入值最大
      index=b.length;
    }
    // System.out.println(index);
    for(int i=0,j=0;i<p.length;++i){
      if(i != index){
        p[i]=b[j];
        j++;
      }else{
        p[i]=v;
      }
    }

    for(int i=0;i<p.length;++i){
      System.out.print(p[i]+"\t");
    }
  }
}

  

posted @ 2021-06-20 10:59  ascertain  阅读(45)  评论(0编辑  收藏  举报