天耀18期-09.数组-排序【作业】.doc

xiaoxiao2021-02-28  5

package StringPractice;

 

public class arrayTest {

//1. 把A数组的前5个元素复制到B数组中。

  

   public static void main(String[] args) {

     

      int arrA[]={1,2,3,4,5,6};

      int arrB[]=new int[5];

      for(int i=0;i<5;i++){

         arrB[i]=arrA[i];//把前五位赋值给数组arrB

      }

      for(int i=0;i<arrA.length;i++){

         System.out.println("arrA["+i+"]="+arrA[i]);

      }

      for(int i=0;i<arrB.length;i++){

         System.out.println("arrB["+i+"]="+arrB[i]);

      }

   }

 

}

 

 

/**

 * 2. 有一个长度是10的数组,数组内有10个不重复的数字,要求按从大到小排序。

 * @param args

 */

 

package StringPractice;

 

import java.util.Random;

 

public class Array02 {

 

   public static void main(String[] args) {

      int arr[]=new int[10];

      Random rand=new Random();

      for(int i=0;i<arr.length;i++){

         arr[i]=rand.nextInt(100);//在0到100的数中随机进行对数组赋值

         System.out.print(arr[i]+" ");

      }

     

      System.out.println();

      //使用冒泡法进行对数组的值进行从小到大进行排序

      for(int i=arr.length;i>0;i--){

        

         for(int j=0;j<i-1;j++){

            if (arr[j]>arr[j+1]){

            int temp=arr[j];

            arr[j]=arr[j+1];

            arr[j+1]=temp;

            }

         }

      }

      for(int i=0;i<arr.length;i++){

         System.out.print(arr[i]+" ");

      }

   }

 

}

/**

 * 3. 有一个长度是10的数组,要求删除某一个位置的元素,后边元素前置。

 */

package StringPractice;

 

import java.util.Scanner;

 

public class Array03 {

 

   public static void main(String[] args) {

     

      Scanner scanner=new Scanner(System.in);

      System.out.println("请输入您要删除的元素的位置:");

      int a=scanner.nextInt();

       

      int []arr=new int[]{1,2,3,4,5,6,7,89,0,7};

      for(int i=a-1;i<arr.length-1;i++){

         arr[i]=arr[i+1];//把后一个元素的值赋给前一个

      }

         arr[9]=0;

         for(int i=0;i<9;i++){

            System.out.print(arr[i]+" ");

         }

   }

 

}

package StringPractice;

/**

 * 4. 有一个长度是10的数组,按递增排列,用户输入一个数,插入适当位置。

 * @author liyinxia

 *

 */

import java.util.Scanner;

 

public class Array04 {

  

   public static void main(String[] args) {

     

      // TODO Auto-generated method stub

      int []arr=new int[]{2,1,2,7,5,9,6,7,89,3,7};

      int len=arr.length;

      int []arr1=new int[len+1];

      Scanner scanner=new Scanner(System.in);

      System.out.println("请您输入一个数:");

      int insert=scanner.nextInt();

     

      //冒泡排序

      for(int i=arr.length;i>0;i--){

        

         for(int j=0;j<i-1;j++){

            if (arr[j]>arr[j+1]){

            int temp=arr[j];

            arr[j]=arr[j+1];

            arr[j+1]=temp;

            }

         }

      }

     

      /**

       * 进行插入操作

       */

      for (int i=0;i<len;i++){

         if(arr[i]<=insert){

            continue;}

         else{

            for(int j=0;j<=i;j++){

                arr1[j]=arr[j];

            }

            arr[i]=insert;

            for(int k=i+1;k<len+1;k++,i++){

                arr1[k]=arr[i];

            }

         }

      }

  

      for(int j=0;j<len+1;j++){

         System.out.print(arr1[j]+" ");

      }

   }

 

}

 

//5. 有一个长度是10的数组,数组内有10个数字,要求去掉重复的

 

package ArrayPractice;

 

import java.util.Arrays;

import java.util.Random;

 

public class OneArray_5 {

  

   public static int[] trim(int array[]){

      int len=array.length;           //获得传入数组的长度

      int brray[]=new int[len];       //声明一个数组,长度为传入数组的长度          

  

      int newlen=len;

      for(int i=0;i<len;i++){               //初始化brray

         brray[i]=0;

      }

      for(int j=1;j<len;j++){

         if(array[j]==array[j-1]){       //记录重复的值

            brray[j]=1;

            newlen--;

         } 

      }

      int newarray[]=new int[newlen];//声明一个数组,长度为除去重复数字的个数

      int newId=0;

      for(int k=0;k<len;k++){

         if(brray[k]==0){

            newarray[newId++]=array[k];

           

         }

      }

      return newarray;//返回的是一个数组

   }

 

   public static void main(String[] args){

      Random rd=new Random();

      int[]array=new int[10];

      for(int i=0;i<array.length;i++){

         array[i]=rd.nextInt(20);

         System.out.print(array[i]+" ");

         /*if((i+1)%5==0){

            System.out.println();

         }*/

      }

      Arrays.sort(array);

      for(int i=0;i<array.length;i++){

         System.out.print(array[i]+" ");

         /*if((i+1)%5==0){

            System.out.println();

            }*/

      }

      int c[]=trim(array);

      System.out.println("去除重复数字后的结果:");

      for(int i=0;i<c.length;i++){

         System.out.print(array[i]+" ");

         /*if((i+1)%5==0){

            System.out.println();

            }*/

      }

  

   }

}

//6. 把A数组的第三到第六位之间的元素删除。

package ArrayPractice;

 

public class Array06 {

   public static int[] trim(int array[]){

      int len=array.length;

      int brray[]=new int[len];

      for(int i=0;i<len;i++){

         brray[i]=0;

      }

      int newlen=len;

      for(int j=0;j<len;j++){

         if(j>=2&&j<=5){

            brray[j]=1;

            newlen--;

         }

      }

      int newId=0;

      int newArray[]=new int[newlen];

      for(int k=0;k<len;k++){

         if(brray[k]==0){

            newArray[newId++]=array[k];

         }

      }

      return newArray;

   }

   public static void main(String[] args){

      int []arr=new int[]{1,2,3,4,5,6,7,89,0,7};

      int c[]=trim(arr);

      for(int i=0;i<c.length;i++){

         System.out.print(c[i]+" ");

      }

   }

}

/**

 * 7. 已知A数组,B数组,定义一个数组C,要求C包含A,B数组中的数据(无重复值)。

 */

package StringPractice;

 

import java.util.Arrays;

 

import java.util.Random;

 

import com.sun.xml.internal.bind.v2.runtime.unmarshaller.XsiNilLoader.Array;

 

public class OneArray_07 {

   /**

    * 将两个数组合并到一个数组中

    * @param a

    * @param b

    * @return

    */

   public static int[] combineArray(int a[],int b[]){

      int a1=a.length;

      int b1=b.length;

      int length=a1+b1;

      int i,j;

      System.out.println("a数组的元素如下");

      fori=0;i<a1;i++){

         System.out.print(a[i]+" ");

      } 

      System.out.println();

      System.out.println("b数组的元素如下");

      fori=0;i<b1;i++){

         System.out.print(b[i]+" ");

        

      }

  int newarray[]=new int[length];

      for(i=0,j=0;i<a1&&j<b1;){

         if(a[i]<b[j]){

            newarray[i+j]=a[i];

            i++;

         }

         else{

            newarray[i+j]=b[j];

            j++;

         }

         if(i==a1){

            System.arraycopy(b,j,newarray,a1+j,b1-j);//把b数组中的从下标为j开始,存放在newarray数组中,下标的变化

         }                                 //是从a1+j延续b1-j个数字              

         if(j==b1){

            System.arraycopy(a,i,newarray,b1+i,a1-i);

         }

        

      }

      return newarray;

   }

   /**

    * 去除重复的数字

    * @param array

    * @return

    */

   public static int[] trim(int array[]){

      int len=array.length;           //获得传入数组的长度

      int brray[]=new int[len];       //声明一个数组,长度为传入数组的长度          

  

      int newlen=len;

      for(int i=0;i<len;i++){               //初始化brray

         brray[i]=0;

      }

      for(int j=1;j<len;j++){

         if(array[j]==array[j-1]){       //记录重复的值

            brray[j]=1;

            newlen--;

         } 

      }

      int newarray[]=new int[newlen];//声明一个数组,长度为除去重复数字的个数

      int newId=0;

      for(int k=0;k<len;k++){

         if(brray[k]==0){

            newarray[newId++]=array[k];

           

         }

 }

      return newarray;//返回的是一个数组

   }

   //主函数

   public static void main(String[] args){

      Random rd=new Random();

      int arr1[] =new int[10];

      int arr2[]=new int[10];

      //对数组进行随机赋值

      for(int i=0;i<arr1.length;i++){

         arr1[i]=rd.nextInt(20);

      }

      for(int i=0;i<arr2.length;i++){

         arr2[i]=rd.nextInt(20);

      }

      /*//先对arr1和arr2数组进行排序

      Arrays.sort(arr1);

      Arrays.sort(arr2);*/

      //调用combineArray方法

      int newarr3[]=combineArray(arr1,arr2);

      System.out.println();

      System.out.println("输出合并后未排序的数组值:");

      for(int i=0;i<newarr3.length;i++){

         System.out.print(newarr3[i]+" ");

      }

      System.out.println();

      Arrays.sort(newarr3);

      System.out.println("输出合并后排序的数组值:");

      for(int i=0;i<newarr3.length;i++){

         System.out.print(newarr3[i]+" ");

      }

      System.out.println();

     

      //调用trim方法,去除重复数字

     

      int newarr4[]=trim(newarr3);

      System.out.println("输出最后的结果,合并后从小到大排列,且无重复数字:");

      for (int i=0;i<newarr4.length;i++){

         System.out.print(newarr4[i]+" ");

      }

   }

 

}

 

package StringPractice;

 

public class Array08 {

   public static int DiagonalAdd(int array[][]){

      int len=array.length;

      int diagonal1=0;

      int diagonal2=0;

      int sum;

      /**

       * 将两条对角线进行相加

       */

      for(int i=0;i<len;i++){

         diagonal1+=array[i][i];

         diagonal2+=array[len-i-1][i];

      }

      if(len%2==0){

         sum=diagonal1+diagonal2;//判断没有相交,直接相加

      }

      else{

         sum=diagonal1+diagonal2-array[len/2][len/2];//判断有相交的值,需要减去相交的值

      }

      return sum;

   }

 

   public static void main(String[]args){

      int arr[][]=new int[6][6];

      int a=0;

      System.out.println("输出数组中的值:");

      for(int i=0;i<arr.length;i++){

         for(int j=0;j<arr[i].length;j++){

            arr[i][j]=a;

            a++;

            System.out.print(arr[i][j]+"\t");

         }

         System.out.println();

     

      }

      //调用DiagonalAdd方法

      int sum=DiagonalAdd(arr);

      System.out.println("对角线的和是:"+sum);

   }

}

/**

 * 9. 判断一个数组是否对称

 */

package StringPractice;

 

public class Array09 {

   //将矩阵转置

   public static int[][] Transposition(int array[][]){

      int len=array.length;

      int brray[][]=new int[len][len];

      for(int i=0;i<len;i++){

         for(int j=0;j<len;j++){

            brray[j][i]=array[i][j];

         }

      }

      return brray;

   }

   //主方法

   public static void main(String[]args){

      int array[][]=new int[][]{{1,2},{2,1}};

      int brray[][]=Transposition(array);

      int i,j;

      boolean boo=true;

      fori=0;i<array.length;i++){

         forj=0;j<array[i].length;j++){

            if(array[i][j]!=brray[i][j]){

                boo=false;

                break;

            }

         }

      }

      if(boo){

         System.out.println("这个数组是对称的!!");

      }

      else{

         System.out.println("这个数组不是对称的!!");

      }

   }

}

 

转载请注明原文地址: https://www.6miu.com/read-2400175.html

最新回复(0)