算法

算法

  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 @   清水煮岁月  阅读(419)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示