java实现插入排序算法 附单元测试源码
插入排序算法
public class InsertSortTest {/*** @param args*/public static void main(String[] args) {int[] a={3,5,9,16,29,47,78,89,94};int key=47;int[] b=insertSort(a,key);for(int i=0;i<b.length;i++){System.out.print(b[i]+" "); }}public static int[] insertSort(int[] unsorted,int key){int len=unsorted.length;int[] sorted=new int[len+1];for(int i=0;i<len;i++){//when key exists in edge of arrayif(key<unsorted[0]){sorted[0]=key;System.arraycopy(unsorted, 0, sorted, 1, len);}if(key>unsorted[len-1]){sorted[sorted.length-1]=key;System.arraycopy(unsorted, 0, sorted, 0, len);}//when key exists in mid of arrayif(key>unsorted[i]){sorted[i]=unsorted[i];}else{sorted[i]=key;System.arraycopy(unsorted, i, sorted, i+1, len-i);break;}}return sorted;} }
单元测试源码:(使用junit4)
public class InsertSortUnitTest {@Testpublic void testLT() {int[] a={3,5,9,16,29,47,78,89,94};int key=-5;int[] result={-5,3,5,9,16,29,47,78,89,94};int[] b=InsertSortTest.insertSort(a,key);for(int i=0;i<result.length;i++){assertEquals(result[i],b[i]);}}@Testpublic void testGT() {int[] a={3,5,9,16,29,47,78,89,94};int key=205;int[] result={3,5,9,16,29,47,78,89,94,205};int[] b=InsertSortTest.insertSort(a,key);for(int i=0;i<result.length;i++){assertEquals(result[i],b[i]);}}@Testpublic void testMid() {int[] a={3,5,9,16,29,47,78,89,94};int key=50;int[] result={3,5,9,16,29,47,50,78,89,94};int[] b=InsertSortTest.insertSort(a,key);for(int i=0;i<result.length;i++){assertEquals(result[i],b[i]);}}@Testpublic void testEqual(){int[] a={3,5,9,16,29,47,78,89,94};int key=47;int[] result={3,5,9,16,29,47,47,78,89,94};int[] b=InsertSortTest.insertSort(a,key);for(int i=0;i<result.length;i++){assertEquals(result[i],b[i]);}} }
程序进一步优化:
public class InsertSortTest {/*** @param args*/public static void main(String[] args) {Comparable[] a={3f,5f,9f,16f,29f,47f,78f,89f,94f};Comparable key=47.78f;Comparable[] b=insertSort(a,key);for(int i=0;i<b.length;i++){System.out.print(b[i]+" "); }}public static Comparable[] insertSort(Comparable[] unsorted,Comparable key){int len=unsorted.length;Comparable[] sorted=new Comparable[len+1];for(int i=0;i<len;i++){//when key exists in edge of arrayif(key.compareTo(unsorted[0])<0){sorted[0]=key;System.arraycopy(unsorted, 0, sorted, 1, len);}if(key.compareTo(unsorted[len-1])>0){sorted[sorted.length-1]=key;System.arraycopy(unsorted, 0, sorted, 0, len);}//when key exists in mid of arrayif(key.compareTo(unsorted[i])>0){sorted[i]=unsorted[i];}else{sorted[i]=key;System.arraycopy(unsorted, i, sorted, i+1, len-i);break;}}return sorted;} }
单元测试的就略过了吧。
转载于:https://www.cnblogs.com/davidwang456/p/3474750.html
java实现插入排序算法 附单元测试源码相关推荐
- JAVA:实现Knuth-Morris-Pratt算法(附完整源码)
JAVA:实现Knuth-Morris-Pratt算法 package com.thealgorithms.others;public class KMP {// a working examplep ...
- C语言插入排序Insertion Sort算法(附完整源码)
插入排序Insertion Sort算法 插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 插入排序Insertion Sort算法的完整源码(定义,实现,main函 ...
- C语言以递归实现插入排序Insertion Sort算法(附完整源码)
以递归实现插入排序Insertion Sort算法 以递归实现插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 以递归实现插入排序Insertion Sort算法的完 ...
- C语言实现折半插入排序(Binary Insertion Sort)算法(附完整源码)
折半插入排序Binary Insertion Sort 折半插入排序(Binary Insertion Sort)算法的完整源码(定义,实现,main函数测试) 折半插入排序(Binary Inser ...
- C语言merge sort归并排序算法(附完整源码)
C语言merge sort归并排序算法 merge sort归并排序算法的完整源码(定义,实现) merge sort归并排序算法的完整源码(定义,实现) #ifndef MERGE_SORT_H # ...
- C++实现Dijkstra(迪杰斯特拉)算法(附完整源码)
C++Dijkstra迪杰斯特拉算法的实现 C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main函数测试) C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main ...
- C++bidirectional dijkstra双向最短路径算法(附完整源码)
C++bidirectional dijkstra双向最短路径算法 C++bidirectional dijkstra双向最短路径算法的完整源码(定义,实现,main函数测试) C++bidirect ...
- C++实现cut rod切杆算法(附完整源码)
C++实现cut rod切杆 实现cut rod切杆算法的完整源码(定义,实现,main函数测试) 实现cut rod切杆算法的完整源码(定义,实现,main函数测试) #include <ar ...
- C++ sodoku solve数独算法(附完整源码)
sodoku solve数独算法 sodoku solve数独算法的完整源码(定义,实现,main函数测试) sodoku solve数独算法的完整源码(定义,实现,main函数测试) #includ ...
最新文章
- 02_计算机科学和软件工程的区别
- 全球与中国InGaAs光电二极管传感器市场投资机会与市场风险评估报告2022-2028年
- beego数据库orm操作数据表返回数组
- IdentityServer4密码模式
- 2018移动端页面适配-自适应最新方案直接写px--------通过gulp工作流搭建一体化的移动端开发环境
- 数颜色(洛谷-P1903)
- 求分数序列和(信息学奥赛一本通-T1078)
- WHATWG API——url.parse()的替代方案
- this.$set 更新整个数组_学点算法(二)——有序数组二分搜索算法
- 在AIX系统下查询硬件信息的方法
- U盘PE删除影子系统(PowerShadow),解决安装后重启蓝屏的问题
- 黑马程序员——一些常用类的代码实践
- 【搬运】 Cadence orcad常用库olb介绍
- NetSuite 财务科目合并
- TS 中 as 用法
- 安装小豚当家监控摄像头
- 安卓10源码开发定制(29)手电筒控制源码分析
- 网络基础 IP协议 子网划分 子网汇总 超网 无类间路由超详细介绍
- 计算机考试在线考试答案2019,2019石油华东《计算机应用基础》在线考试(答案)...
- 20135203齐岳 信息安全系统设计基础期末总结
热门文章
- 白大脑比超级计算机还,和超级计算机相比,人类的大脑很弱吗
- yii 清除mysql缓存_Yii2开启数据表结构缓存和清除
- 记录一下pandas的分组统计功能,agg
- linux 进程原理内存,linux进程通信之共享内存原理(基于linux 1.2.13)
- php中的伪类选择器,css伪类选择器介绍
- C++ 命名空间 实战(一)
- tf.where 用法
- python 写 log
- java自定义类怎么比大小_实战:Java 扑克牌比较游戏
- websocket 携带请求头_WebSocket与Nginx的小秘密