插入排序算法

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实现插入排序算法 附单元测试源码相关推荐

  1. JAVA:实现Knuth-Morris-Pratt算法(附完整源码)

    JAVA:实现Knuth-Morris-Pratt算法 package com.thealgorithms.others;public class KMP {// a working examplep ...

  2. C语言插入排序Insertion Sort算法(附完整源码)

    插入排序Insertion Sort算法 插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 插入排序Insertion Sort算法的完整源码(定义,实现,main函 ...

  3. C语言以递归实现插入排序Insertion Sort算法(附完整源码)

    以递归实现插入排序Insertion Sort算法 以递归实现插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 以递归实现插入排序Insertion Sort算法的完 ...

  4. C语言实现折半插入排序(Binary Insertion Sort)算法(附完整源码)

    折半插入排序Binary Insertion Sort 折半插入排序(Binary Insertion Sort)算法的完整源码(定义,实现,main函数测试) 折半插入排序(Binary Inser ...

  5. C语言merge sort归并排序算法(附完整源码)

    C语言merge sort归并排序算法 merge sort归并排序算法的完整源码(定义,实现) merge sort归并排序算法的完整源码(定义,实现) #ifndef MERGE_SORT_H # ...

  6. C++实现Dijkstra(迪杰斯特拉)算法(附完整源码)

    C++Dijkstra迪杰斯特拉算法的实现 C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main函数测试) C++Dijkstra(迪杰斯特拉)算法的完整源码(定义,实现,main ...

  7. C++bidirectional dijkstra双向最短路径算法(附完整源码)

    C++bidirectional dijkstra双向最短路径算法 C++bidirectional dijkstra双向最短路径算法的完整源码(定义,实现,main函数测试) C++bidirect ...

  8. C++实现cut rod切杆算法(附完整源码)

    C++实现cut rod切杆 实现cut rod切杆算法的完整源码(定义,实现,main函数测试) 实现cut rod切杆算法的完整源码(定义,实现,main函数测试) #include <ar ...

  9. C++ sodoku solve数独算法(附完整源码)

    sodoku solve数独算法 sodoku solve数独算法的完整源码(定义,实现,main函数测试) sodoku solve数独算法的完整源码(定义,实现,main函数测试) #includ ...

最新文章

  1. 02_计算机科学和软件工程的区别
  2. 全球与中国InGaAs光电二极管传感器市场投资机会与市场风险评估报告2022-2028年
  3. beego数据库orm操作数据表返回数组
  4. IdentityServer4密码模式
  5. 2018移动端页面适配-自适应最新方案直接写px--------通过gulp工作流搭建一体化的移动端开发环境
  6. 数颜色(洛谷-P1903)
  7. 求分数序列和(信息学奥赛一本通-T1078)
  8. WHATWG API——url.parse()的替代方案
  9. this.$set 更新整个数组_学点算法(二)——有序数组二分搜索算法
  10. 在AIX系统下查询硬件信息的方法
  11. U盘PE删除影子系统(PowerShadow),解决安装后重启蓝屏的问题
  12. 黑马程序员——一些常用类的代码实践
  13. 【搬运】 Cadence orcad常用库olb介绍
  14. NetSuite 财务科目合并
  15. TS 中 as 用法
  16. 安装小豚当家监控摄像头
  17. 安卓10源码开发定制(29)手电筒控制源码分析
  18. 网络基础 IP协议 子网划分 子网汇总 超网 无类间路由超详细介绍
  19. 计算机考试在线考试答案2019,2019石油华东《计算机应用基础》在线考试(答案)...
  20. 20135203齐岳 信息安全系统设计基础期末总结

热门文章

  1. 白大脑比超级计算机还,和超级计算机相比,人类的大脑很弱吗
  2. yii 清除mysql缓存_Yii2开启数据表结构缓存和清除
  3. 记录一下pandas的分组统计功能,agg
  4. linux 进程原理内存,linux进程通信之共享内存原理(基于linux 1.2.13)
  5. php中的伪类选择器,css伪类选择器介绍
  6. C++ 命名空间 实战(一)
  7. tf.where 用法
  8. python 写 log
  9. java自定义类怎么比大小_实战:Java 扑克牌比较游戏
  10. websocket 携带请求头_WebSocket与Nginx的小秘密