不良使 2022-01-27 16:42 采纳率: 100%
浏览 57
已结题

要拿出来的数组不是数字,而是类似于一段字符串,想知道怎么转换为数字

问题遇到的现象和发生背景

验证二分法是真的正确,所以用暴力遍历和二分法同时处理数组,查看二分法是否编写正确

问题相关代码,请勿粘贴截图

package cn.Text;

import java.util.Arrays;

/**

  • 二分法

  • 一次找一半,比较找位置/数字(num) 保证有序

  • 注:我们中点位置一般去上中点

  • 135679 上中点为5

  • /
    public class Dichotomy {
    //TODO 二分法查找
    public static boolean find(int[] arr,int num){

      //边界条件
      if((arr==null)||(arr.length==0)){
          return false;
      }
      //左边界
      int L=0;
      //有边界
      int R=arr.length-1;
      /**
       * arr的[L...........R]之间查找一个数num
       */
      while(L<=R){
          int media=(L+R)/2;
          if(arr[media]==num){
              return true;
          }
          else if(arr[media]<num){
              L=media+1;
          }
          else{
              R=media-1;
          }
      }
      return false;
    

    }

    //TODO 遍历,暴力方法解决
    public static boolean test(int[] sortedArr, int num) {

      for (int cur : sortedArr) {
          if (cur == num) {
              return true;
          }
      }
      return false;
    

    }

    public static int[] generateRandomArray(int maxSize, int maxValue) {

      int[] arr = new int[(int) ((maxSize + 1) * Math.random())];
      for (int i = 0; i < arr.length; i++) {
          arr[i] = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
      }
      return arr;
    

    }

    public static void main(String[] args) {

      int testTime = 500000;
      int maxSize = 10;
      int maxValue = 100;
      boolean succeed = true;
      for (int i = 0; i < testTime; i++) {
          int[] arr = generateRandomArray(maxSize, maxValue);
          System.out.println(arr);
          Arrays.sort(arr);
          int value = (int) ((maxValue + 1) * Math.random()) - (int) (maxValue * Math.random());
          if (test(arr, value) != find(arr, value)) {
              System.out.println("出错了!");
              succeed = false;
              break;
          }
      }
      System.out.println(succeed ? "Nice!" : "Fucking fucked!");
    

    }
    }

运行结果及报错内容

运行正确,就是不知道怎么转换为数字

img

我的解答思路和尝试过的方法
我想要达到的结果

两个一样的,说明二分法正确,我想知道数组怎么打印出

  • 写回答

5条回答 默认 最新

  • heling_m6ss 2022-01-27 16:53
    关注

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 2月5日
  • 已采纳回答 1月28日
  • 创建了问题 1月27日

悬赏问题

  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗
  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分