插入排序(Insertsort)之Java实现


目录(?)[+]

插入排序算法介绍

排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。

插入排序算法Java实现

Java里面有很多数据类型,我们选取的是最简单的整数,但这并不失一般性。即使是自己定制化的对象,实现了java.lang.Comparable, 把对应的 大于号(>)以及小于号(<)换成compareTo即可。

由于需要频繁的操作以及打印数组,先写一个小的数组工具类。代码如下:

  1. publicclassArrayUtils{
  2. publicstaticvoidprintArray(int[]array){
  3. System.out.print("{");
  4. for(inti=0;i<array.length;i++){
  5. System.out.print(array[i]);
  6. if(i<array.length-1){
  7. System.out.print(",");
  8. }
  9. }
  10. System.out.println("}");
  11. }
  12. }

从数组的第二个元素开始,取得当前待处理的元素,插入到当前元素之前的子数组里面,直到数组的末尾。插入排序的Java实现以及测试代码如下:

  1. publicclassInsertSortTest{
  2. publicstaticvoidinsertSort(int[]array){
  3. if(array==null||array.length<2){
  4. return;
  5. }
  6. for(inti=1;i<array.length;i++){
  7. intcurrentValue=array[i];
  8. intposition=i;
  9. for(intj=i-1;j>=0;j--){
  10. if(array[j]>currentValue){
  11. array[j+1]=array[j];
  12. position-=1;
  13. }else{
  14. break;
  15. }
  16. }
  17. array[position]=currentValue;
  18. }
  19. }
  20. publicstaticvoidmain(String[]args){
  21. int[]array={3,-1,0,-8,2,1};
  22. ArrayUtils.printArray(array);
  23. insertSort(array);
  24. ArrayUtils.printArray(array);
  25. }
  26. }

插入排序算法介绍

排序算法是最简单的算法,也是最基本的算法。顾名思义,插入排序就是把当前待排序的元素插入到一个已经排好序的列表里面。 一个非常形象的例子就是右手抓取一张扑克牌,并把它插入左手拿着的排好序的扑克里面。插入排序的最坏运行时间是O(n2), 所以并不是最优的排序算法。特点是简单,不需要额外的存储空间,在元素少的时候工作得好。

插入排序算法Java实现

Java里面有很多数据类型,我们选取的是最简单的整数,但这并不失一般性。即使是自己定制化的对象,实现了java.lang.Comparable, 把对应的 大于号(>)以及小于号(<)换成compareTo即可。

由于需要频繁的操作以及打印数组,先写一个小的数组工具类。代码如下:

  1. publicclassArrayUtils{
  2. publicstaticvoidprintArray(int[]array){
  3. System.out.print("{");
  4. for(inti=0;i<array.length;i++){
  5. System.out.print(array[i]);
  6. if(i<array.length-1){
  7. System.out.print(",");
  8. }
  9. }
  10. System.out.println("}");
  11. }
  12. }

从数组的第二个元素开始,取得当前待处理的元素,插入到当前元素之前的子数组里面,直到数组的末尾。插入排序的Java实现以及测试代码如下:

  1. publicclassInsertSortTest{
  2. publicstaticvoidinsertSort(int[]array){
  3. if(array==null||array.length<2){
  4. return;
  5. }
  6. for(inti=1;i<array.length;i++){
  7. intcurrentValue=array[i];
  8. intposition=i;
  9. for(intj=i-1;j>=0;j--){
  10. if(array[j]>currentValue){
  11. array[j+1]=array[j];
  12. position-=1;
  13. }else{
  14. break;
  15. }
  16. }
  17. array[position]=currentValue;
  18. }
  19. }
  20. publicstaticvoidmain(String[]args){
  21. int[]array={3,-1,0,-8,2,1};
  22. ArrayUtils.printArray(array);
  23. insertSort(array);
  24. ArrayUtils.printArray(array);
  25. }
  26. }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值