折半插入排序是对直接插入排序的升级算法,直接插入排序算法在大数据量面前排序效率是比较低的,折半插入排序的算法对直接插入排序算法的改进就是“查找插入位置”上的算法上的改进,由于需要查找的数据在数组上正好是有序的部分,那么可以非常方便的使用折半查找的算法查找插入的位置。
import java.util.Scanner; public class BInsertSort{ public static void main(String args[]){ Scanner scanner=new Scanner(System.in); int total=scanner.nextInt(); int[] array=new int[1024]; for(int i=0;i<total;i++){ array[i]=scanner.nextInt(); } //total是数组长度 insertSort(array,total); output(array,total); } public static void output(int[] array,int total){ for(int i=0;i<total;i++){ System.out.print(array[i]+" "); } System.out.println(); } public static void insertSort(int[] array,int total){ int temp; for(int i=1;i<total;i++){ temp=array[i]; int low=0; int high=i-1; int midLoc=0; //退出循环的时候一定是low比high大1,high可能为负数,但是low一定是正数 while(low<=high){ midLoc=(low+high)/2; if(temp<array[midLoc]){ high=midLoc-1; } else{ low=midLoc+1; } } //这里使用low或者high+1都可以,low=high+1 for(int j=i;j>low;j--){ array[j]=array[j-1]; } array[low]=temp; } } }
测试数据使用算法生成:一共有1024个打乱的整数
import java.util.Random; public class MyRandom { public static void main(String args[]){ int[] array=new int[1024]; for(int i=0;i<1024;i++){ array[i]=i; } for(int i=0;i<=1023;i++){ int m=new Random().nextInt(1024); int n=new Random().nextInt(1024); int temp=array[m]; array[m]=array[n]; array[n]=temp; } System.out.println("1024"); for(int i=0;i<1024;i++){ System.out.print(array[i]+" "); } System.out.println(); } }
怎么实现两个程序之间的通信比较重要,在Linux下可以使用管道实现:
java MyRandom | java BInsertSort
相关推荐
### 数据结构之折半插入排序 #### 知识点概览 1. **折半插入排序的基本概念** 2. **折半插入排序算法原理** 3. **折半插入排序的时间复杂度分析** 4. **折半插入排序的空间复杂度分析** 5. **折半插入排序与普通...
实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...
折半插入排序(Binary Insertion Sort)是一种改进的插入排序方法,它利用二分查找技术来减少比较次数,从而提高排序效率。现在我们来深入探讨这个主题。 首先,我们要了解插入排序的基本原理。插入排序是一种简单...
总的来说,折半插入排序是数据结构学习中的基础内容,理解其原理有助于更好地掌握其他高级排序算法。尽管在大规模无序数据处理上不是最优选择,但在特定情况下,其高效的比较策略能带来性能提升。在实际编程中,根据...
数据结构排序算法中的折半插入排序,又称二分法,是对基本插入排序的一种改进,比普通的插入排序要快
用顺序表做的折半插入排序void BInsertSort(SqList &L) { int i,j,low,high,m; for(i=2;i;++i) { L.elem[0]=L.elem[i]; low=1; high=i-1; while(low) { m=(low+high)/2; if(L.elem[0][m]) ...
本实验涉及了六种常见的排序算法:泡泡排序、直接插入排序、折半插入排序、希尔排序、直接选择排序,并且对每种排序算法进行了性能分析,包括统计执行时间、比较次数和交换次数。这些数据被保存在TXT文件中,便于...
- **空间复杂度**:折半插入排序是原地排序算法,不使用额外的数据结构,因此空间复杂度为O(1)。 #### 七、应用场景 折半插入排序适用于小规模数据集或部分已排序的数据。在这些场景下,通过减少比较次数可以显著...
本文将深入探讨数据结构中的折半插入排序(Half-Insertion Sort)算法,并通过C++语言实现这一算法。折半插入排序是一种在已排序的数组中寻找合适位置插入新元素的优化方法,其核心思想是利用二分查找减少比较次数,...
数据结构(c语言版)严蔚敏 吴伟民编著 中直接插入排序、折半排序、shell排序、冒泡排序、快速排序、选择排序、堆排序的实现、归并排序,使用c语言实现
本次我们关注的是两种基础排序算法:简单选择排序和折半插入排序,它们都是在C语言环境中实现的数据结构作业。 首先,让我们详细了解这两种排序算法。 **简单选择排序**是一种简单直观的排序算法。它的基本思想是...
### 数据结构排序实验报告知识点解析 #### 实验背景与目的 - **实验背景**:本实验报告来源于南昌大学科学技术学院信息学科部计算机系的一次专业课程实验。《数据结构》作为一门重要的计算机基础课程,其目的在于...
直接插入、折半插入、冒泡、快速、简单选择等排序方法 用c语言实现 代码运行正常 不会有任何的问题
在这个数据结构报告中,我们将深入探讨七种不同的内排序算法:简单选择排序、冒泡排序、插入排序、快速排序、两路合并排序以及堆排序。这些排序算法在C++语言环境下进行了实现,并且包含了详细的源代码和实验报告,...
本主题将详细介绍六种经典的排序方法:折半插入排序、冒泡排序、快速排序、简单选择排序、归并排序和堆排序。这六种方法在不同的场景下各有优势,理解它们的工作原理对于优化算法性能和解决实际问题至关重要。 1. ...
(6) 利用直接插入排序或者折半插入排序按照姓名进行排序; (7) 利用快速排序按照学号进行排序; (8) 根据姓名进行折半查找,要求使用递归算法实现,成功返回此学生的学号和成绩; (9) 根据学号进行折半查找,要求...
实现数据的折半插入排序、冒泡排序、快速排序和二路归并排序。 输入实例: 请输入待排序数据数目: 3 请输入待排序数据: 23,6,45 输出示例: 折半插入排序: 比较次数 移动元素次数 排序结果 6,23,45。