package Sort;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Random;
public class BinaryInsertSort {
private static void binaryInsertSort(int[] data){
int size = data.length;
int temp,i,j,low,mid,high;
for(i=1;i<size;i++){
temp = data[i];
low = 0;
high = i-1;
while(low<=high){
mid = (low+high)/2;
if(temp>data[mid]){
low = mid+1;
} else {
high = mid-1;
}
}
for(j=i;j>low;j--){
data[j] = data[j-1];
}
data[low] = temp;
}
}
private static void generateRandomInt(int[] data){
int size = data.length;
Random rd = new Random();
for(int i=0;i<size;i++){
data[i] = Math.abs(rd.nextInt())%100;
}
}
private static void print(int[] data){
for(int i=0;i<data.length;i++){
System.out.print(data[i]+" ");
}
System.out.println();
}
public static void main(String[] args){
int size = 20;
System.out.println("输入数组的大小:");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
try {
size = Integer.parseInt(br.readLine());
} catch (NumberFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
int[] data = new int[size];
generateRandomInt(data);
print(data);
binaryInsertSort(data);
print(data);
}
}
分享到:
相关推荐
做了个Java Swing 图形界面,选择3中排序方法进行排序。工程用NetBeans 打开,运行Main.java文件或直接点击运行主程序,...BinSort.java(折半插入排序) QKSort.java(快速排序算法) SelectSort.java(简单选择排序)
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
直接插入排序和折半插入排序是两种常见的简单排序算法,它们都基于比较和移动元素来达到排序的目的。这里我们将深入探讨这两种算法的实现、性能分析以及它们的特点。 **直接插入排序** 是一种基础的排序算法,其...
##### 折半插入排序Java实现示例 ```java public class BinaryInsertSortTest { public static int count = 0; public static void main(String[] args) { int[] data = new int[]{5, 3, 6, 2, 1, 9, 4, 8, 7};...
通过这段代码,我们不仅学习了折半插入排序的基本原理和实现方法,还复习了Java语言中数组的操作、二分查找算法以及基本的控制结构。这对于Java初学者来说,是一次非常有价值的实践和学习机会。
八大排序java实现版本,直接插入排序、折半插入排序、冒泡排序、简单选择排序、希尔插入排序、快速排序 、堆排序、2-路归并排序 、基数排序,并有时间比较,博文...
Java中常见的插入排序实现有三种:直接插入排序、折半插入排序和希尔排序。 1. **直接插入排序**: 直接插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。在Java...
主要是用java实现了数据结构中的直接插入排序,折半插入排序以及希尔排序。
这个PDF文档可能涵盖了多种内部排序算法的Java实现,包括直接插入排序、折半插入排序、希尔排序以及快速排序。以下是对这些排序算法的详细说明: 1. **直接插入排序(InsertSort)**: 直接插入排序是一种简单的...
本项目是一个完整的Java实现的排序系统,涵盖了冒泡排序、直接插入排序、快速排序、折半插入排序以及选择排序这五种经典的排序算法。下面我们将逐一探讨这些排序方法及其在Java中的实现。 1. **冒泡排序**:冒泡...
直接插入排序法在插入新元素时,需要从数组的开头到当前元素的位置逐个比较,而折半插入排序则避免了这种线性搜索,转而采用二分查找方法来快速定位插入位置。 在Java中,我们可以用如下的代码实现折半排序算法: ...
简单排序包括:选择排序,插入排序,折半插入排序,冒泡排序。 分治思想的排序包括:归并排序,快速排序,堆排序。 程序把随机生成的整数进行排序,开始时用1到7选择用哪种排序(没有图形界面,算法为主),堆排序...
根据描述,我们可以将其分为两种类型:直接插入排序和折半插入排序。 1. **直接插入排序**: - **基本思想**:将当前元素与已排序的部分进行比较,如果当前元素小于已排序的元素,则将已排序的元素依次向后移动,...
- 算法的种类:插入排序(直接插入排序,希尔排序,折半插入排序),选择排序(直接选择排序,堆排序(升序/最大堆)),交换排序(冒泡排序,快速排序),归并排序,分配排序(基数排序) - 算法的时间复杂度 - 算法的空间...
插入排序java
6. **折半插入排序(Binary Insertion Sort)**:在插入排序基础上,使用二分查找定位插入位置,减少比较次数,提高了效率,但时间复杂度仍然为O(n^2)。 7. **希尔排序(Shell Sort)**:改进版的插入排序,通过...
插入排序分为直接插入排序和折半插入排序。直接插入排序的基本思想是将未排序的元素逐个插入到已排序的序列中。折半插入排序则是通过二分查找来确定插入位置,减少了比较的次数。希尔排序是一种改进的插入排序,它...
2. **折半插入排序**:这是一种优化后的直接插入排序,通过二分查找来减少比较次数,从而提高效率。时间复杂度为O(N^2),但由于减少了比较次数,实际运行速度比直接插入排序快。 3. **希尔排序**:希尔排序是对直接...
本文档主要介绍了数据结构课程设计中的一些排序算法的实现,包括直接插入排序、折半插入排序和希尔排序。下面是对每种排序算法的详细解释: 1. 直接插入排序: 直接插入排序是一种简单的排序算法,它的工作原理是...