帮我找一个用Java写的二分法排序代码

这是一个使用 Java 语言实现二分法排序的示例代码:

import java.util.Arrays;

public class BinarySort {
  public static void main(String[] args) {
    // 排序前数组
    int[] array = {3, 7, 1, 2, 9, 4, 5};

    // 排序
    sort(array);

    // 打印排序后的数组
    System.out.println(Arrays.toString(array));
  }

  public static void sort(int[] array) {
    for (int i = 1; i < array.length; i++) {
      int value = array[i];
      int j = i - 1;

      // 二分法查找插入位置
      int left = 0;
      int right = i - 1;
      while (left <= right) {
        int mid = (left + right) / 2;
        if (array[mid] > value) {
          right = mid - 1;
        } else {
          left = mid + 1;
        }
      }

      // 将大于 value 的元素向后移动一位
      while (j >= left) {
        array[j + 1] = array[j];
        j--;
      }

      // 将 value 插入到正确的位置
      array[left] = value;
    }
  }
}

上面的代码实现了一种插入排序的算法,其中使用了二分法来查找每个元素应该插入的位置。这个算法的时间复杂度为 O(n log n),相对于普通的插入排序(时间复杂度为 O(n^2))而言,运行速度要快得多。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值