算法

算法

  1. 数据元素的赋值(杨辉三角、回形数等)

     

  2. 求数值型数组中元素的最大值、最小值、平均数、总和等

    int[] arr = new int[10];
           int sum = 0;
           int min = Integer.MIN_VALUE;
           int max = 0;
           for(int i = 0 ; i < arr.length;i++){
               arr[i] = (int)(Math.random()*90)+10;
               sum += arr[i];
               if(arr[i] < min){
                   min = arr[i];
              }
               if(arr[i] > max){
                   max = arr[i];
              }
          }
           for (int i : arr) {
               System.out.print(i+"\t");
          }
           System.out.println();
           System.out.println("总和为:"+sum+" 平均数为:"+sum/arr.length+" 最小值为:"+min+" 最大值为:"+max);
  3. 数组的复制、反转、查找(线性查找、二分查找)

    array2 = array1;//array2和array1指向堆空间中同一个数组实体,相当于一个快捷方式
    //数组复制
    int[] array1,array2;
    array1 = new int[]{1,2,3};
    for(int i = 0 ; i <array1.length;i++){
       array2[i] = array1[i];
    }
    //数组反转
    for(int i = 0 ; i < arr.length/2 ; i++){
               int temp = arr[i];
               arr[i] = arr[arr.length-i-1];
               arr[arr.length-i-1] = temp;
          }
    //线性查找
    String[] str = new String[]{"VC","GG","TT","UU","OO"};
           String s = "TT";
           boolean flag = true;
           for(int i = 0 ; i < str.length ; i++){
               if(str[i].equals(s)){
                   System.out.println("找到了,位置为:"+i);
                   flag = false;
                   break;
              }
          }
           if(flag){
               System.out.println("没找到!");
          }
    //二分查找(数组必须有序)
    int arr[]  = new int[] {-9,-2,4,8,99,122};
           int dest =4;//目标
           int head = 0;//头索引
           int end = arr.length-1;//尾索引
           boolean flag = true;
           while(head <= end){
               int middle = (head + end)/2;
               if(dest == arr[middle]){
                   System.out.println("找到了,索引为:"+middle);
                   flag = false;
                   break;
              }else if(dest > arr[middle]){//目标在右侧
                   head = middle+1;
              }else {//dest < arr[middle],目标在左侧
                   end = middle - 1;
              }
          }
           if(flag){
               System.out.println("没找到!");
          }
  4. 数组元素的排序算法

选择排序:直接选择、堆排序

交换排序:冒泡排序、快速排序

//冒泡排序
       int[] arr = new int[]{33,7,99,23,65,6,45,5};
       for(int i = arr.length-1 ; i > 0 ; i--){//共比较arr.length-1趟
           for(int j = 0 ; j < i ; j++){//每趟找到最大的放到最后,每次比较i次
               if(arr[j] > arr[j+1]){
                   int temp = arr[j];
                   arr[j] = arr[j+1];
                   arr[j+1] = temp;
              }
          }
      }

插入排序:直接插入排序、折半插入排序、shell排序

归并排序

桶式排序

基数排序

性能比较:

posted @ 2021-12-23 16:33  清水煮岁月  阅读(432)  评论(0)    收藏  举报