二分查找法demo

正文

  中午闲着有点时间,做个demo睡觉去,这个例子网上应该都有,自己只是敲一下给自己做个记录。

  

  public static void main(String[] args) {

    int[] whitelist = new int[]{12,13,34,56,78,88,99,100};
    Arrays.sort(whitelist);
    Scanner sc = new Scanner(System.in);

    boolean go=true;
    while(true)
    {
      System.out.println("请输入要查找的数");
      int nextInt = sc.nextInt();

      sc.nextLine();
      int result = rank(nextInt,whitelist);
      if(result!=-1)
      {
        System.out.println("找到的数字位置为:"+result);
        go=false;
      }
      else
      {
        System.out.println("没有找到输入的数字位置");
      }
      }
      }

      public static int rank(int key, int[] a) {
        // 数组必须是有序的
        int lo = 0;
        int hi = a.length - 1;
        while (lo <= hi) {
        // 被查找的键要么不存在,要么必然存在于a[lo,hi]之间
        int mid = lo + (hi - lo) / 2;
        if (key < a[mid]) {
        hi = mid - 1;
        } else if (key > a[mid]) {
          lo = mid + 1;
        } else {
          return mid;
      }

    }

    return -1;
  }

 

转载于:https://www.cnblogs.com/hackerxiaoyon/p/7560889.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个基本的 Shardingsphere 分库分表 demo 配置: 1. 引入依赖 首先需要在项目中引入 Shardingsphere 的相关依赖,具体版本号可根据需求自行选择。 ```xml <!-- ShardingSphere JDBC Core APIs --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-core-jdbc</artifactId> <version>${sharding.version}</version> </dependency> <!-- ShardingSphere JDBC Spring Boot Starter --> <dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>sharding-jdbc-spring-boot-starter</artifactId> <version>${sharding.version}</version> </dependency> ``` 2. 配置数据源 在 application.yml 中配置数据源信息,包括主库和从库的信息。 ```yml spring: datasource: # 主库数据源 master: jdbc-url: jdbc:mysql://localhost:3306/master_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver # 从库数据源 slave1: jdbc-url: jdbc:mysql://localhost:3306/slave_db1?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver slave2: jdbc-url: jdbc:mysql://localhost:3306/slave_db2?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC username: root password: 123456 driver-class-name: com.mysql.jdbc.Driver ``` 3. 配置分库分表规则 在 application.yml 中配置分库分表规则,包括分库规则和分表规则。 ```yml sharding: # 分库规则 default-database-strategy: standard: sharding-column: user_id precise-algorithm-class-name: com.example.demo.algorithm.ModuloDatabaseShardingAlgorithm # 分表规则 tables: user: actual-data-nodes: master.user_${0..1} table-strategy: standard: sharding-column: id precise-algorithm-class-name: com.example.demo.algorithm.ModuloTableShardingAlgorithm ``` 其中,ModuloDatabaseShardingAlgorithm 和 ModuloTableShardingAlgorithm 是自定义的分库分表算,这里只是简单示例。 4. 编写 DAO 层代码 在 DAO 层编写相应的代码,使用 ShardingSphere 提供的 API 完成数据库操作,例如: ```java @Repository public class UserDaoImpl implements UserDao { private final JdbcTemplate jdbcTemplate; @Autowired public UserDaoImpl(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } @Override public User getById(Long id) { String sql = "SELECT * FROM user WHERE id = ?"; return jdbcTemplate.queryForObject(sql, new Object[]{id}, new BeanPropertyRowMapper<>(User.class)); } @Override public void save(User user) { String sql = "INSERT INTO user(id, user_id, name) VALUES (?, ?, ?)"; jdbcTemplate.update(sql, user.getId(), user.getUserId(), user.getName()); } } ``` 5. 测试分库分表效果 编写测试代码,测试分库分表的效果,例如: ```java @SpringBootTest class UserDaoImplTest { @Autowired private UserDao userDao; @Test void testSave() { User user = new User(); user.setId(1L); user.setUserId(1L); user.setName("张三"); userDao.save(user); } @Test void testGetById() { User user = userDao.getById(1L); System.out.println(user); } } ``` 至此,一个简单的 Shardingsphere 分库分表 demo 配置就完成了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值