package com.young4j.sort;/**

* 直接插入排序

*

* 插入排序就是将当前待排序的元素插入到一个已经排序好的列表里。比较形象的例子就是右手抓取一张扑克,将它

* 插入到左手拿着的排序好的一堆扑克里边。时间复杂度为O(n2),空间复杂度O(1),并不是最优的排序算法,特点为:简单,无需额外存储空间。

* 如果元素包含的内容过大,就不适合直接插入排序,因为直接插入排序需要移动元素的次数比较多.

*

* 基本思想:

* 将n哥待排序的元素看成一个有序列表和一个无序列表,开始有序列表中只有一个元素,无序列表中有n-1个元素。

* 每次从无序列表中取出第一个元素,将它插入到有序列表中,使之成为新的有序列表,重复n-1次完成整个排序。

* @author YF

**/import org.slf4j.Logger;

import org.slf4j.LoggerFactory;public classInsertionSort {

Logger logger= LoggerFactory.getLogger(this.getClass());public static voidmain(String[] args) {int a[] = {31,25,78,12,41,19,6,1};newInsertionSort().insertionSort(a);

}/**

* 直接插入排序算法

* @param args*/

private void insertionSort(int[] args) {

logger.info("--------------------------直接插入排序算法--------------------------");int n =args.length;inti,j;for(i = 1;i < n;i ++) {//本次排序待插入有序列表中的元素

int temp =args[i];//将temp插入有序列表中正确的位置,从后往前循环,将大于待插入的数向后移动

for(j = i - 1;j >= 0 && args[j] > temp;j --) {//将待插入元素后移,为插入temp做准备

args[j + 1] =args[j];

}//插入temp

args[j + 1] =temp;

print(args,n,i);

}

printResult(args,n);

}/**

* 打印排序的最终结果

* @param a

* @param n*/

private void printResult(int[] a, intn){

System.out.print("最终排序结果:");for(int j=0;j

System.out.print(" "+a[j]);

}

System.out.println();

}/**

* 打印排序的每次循环的结果

* @param a

* @param n

* @param i*/

private void print(int[] a, int n, inti) {//TODO Auto-generated method stub

System.out.print("第"+i+"次:");for(int j=0;j

System.out.print(" "+a[j]);

}

System.out.println();

}

}

java 主流算法_java常用算法相关推荐

  1. java常见的算法_Java常用算法总结(转)

    交换排序 冒泡排序 将最后一个元素与倒数第二个元素对比,如果最后一个元素比倒数第二个小,则交换两个元素的位置,再用倒数第二个元素与倒数第三个元数对比,直到比到第一个元素,这样经过第一趟排序后得到第一个 ...

  2. java基础排序_Java排序算法-Java入门|Java基础课程

    1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...

  3. 【数据结构与算法】常用算法

    五大常用算法 分治 动态规划 最优子结构 边界 状态转移函数 爬楼梯问题: 4. 最优子结构 F(10)的最优子结构为F(9)和F(8) 5. 边界 F(1) = 1 F(2) = 2 6. 状态转移 ...

  4. java 比较器类_java常用类——比较器

    Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较 ...

  5. java 性能 排序_Java常用排序算法及性能测试集合

    package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...

  6. java 类数组_Java常用类-字符串、日期类、算法及数组工具类等

    大家好,乐字节的小乐又和大家见面了.这次要给大家讲述的是Java常用类. 主要有以下知识点: Ø 字符串相关类(String .StringBuffer.StringBuilder) Ø 算法及数组工 ...

  7. java 常用算法_Java常见算法整理

    兔子问题(斐波那契数列规律) 台阶问题 (兔子问题变种,递归规律) 素数问题(判断素数.质数方式) 水仙花数问题(数字分解) 查找算法(二分查找) 排序算法(选择排序,冒泡排序,快速排序) 兔子问题, ...

  8. java基础_数组常用算法

    求数组最大值代码如下 package java_test; /*求数组的最大值* */ class Sdent{public void inputMax(int [] a){int max=a[0]; ...

  9. java基础之算法_java基础算法

    package com.sxwl; import org.springframework.boot.SpringApplication; import org.springframework.boot ...

  10. java程序两点之间最短路径算法_java 最短路径算法 如何实现有向 任意两点的最短路径...

    展开全部 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节e68a8462616964757a686964616f31333361316131点的最短路径.主要 ...

最新文章

  1. qt获取combobox的值_Qt官方示例嵌套甜甜圈
  2. Labview 串口通信之——PC控制云台方向
  3. php中的图像下载函数,PHP实现的下载远程图片自定义函数分享
  4. 零基础小白前端学习之初始CSS
  5. Ajax 与 XmlHttpRequest
  6. php excel导入数据库显示乱码,php修改excel表格数据库数据格式-使用phpexcel导入excel表格数据到MYSQL,乱码怎么解决...
  7. java集合: List、Set、Map总结 + HashMap/Hashtable 差别
  8. 还在用 Random?试试 ThreadLocalRandom,好用!
  9. OpenGL(一)二维图形的绘制:一个简单的绘制矩形程序
  10. swift 网络----利用URLSession的Data Task下载单张图片(包含图片的增量下载)
  11. 在html语言中读取txt文件中的内容,Javascript写入txt和读取txt文件示例详解
  12. HD2500显卡驱动linux,英特尔HD Graphics 4000/2500 集成显卡驱动
  13. 【Dll调试】DLL调试方法
  14. nii、npz、npy、dcm、mhd 的数据互转处理,及多目标分割处理汇总
  15. Android教父高焕堂谈Android“开源”与“兼容”
  16. 《弃子长安》第三章 月下魅影
  17. 嵌入式开发——rtc时钟调试笔记
  18. 用计算机专业起情侣网名,带对方名字的情侣网名最新精选
  19. Adversarial validation
  20. 黑板模式(Blackboard Design Pattern)。

热门文章

  1. java字符串查找算法_java – 查找所有“字符相等”字符串的高效算法?
  2. nginx服务无法停止(Windows)
  3. 2015年热恋的肉肉们
  4. [您有新的未分配科技点][BZOJ3545BZOJ3551]克鲁斯卡尔重构树
  5. 第二章:2.4 通过 startproject 来创建 Django 项目
  6. 自适应的设置字体的方式
  7. 强制更新客户端Silverlight XAP 文件
  8. 中兴通讯有限公司 招聘“dotnet 高级工程师”
  9. MyBatis源码阅读(五) ---Mapper接口的获取过程
  10. SpringCloud 之客户端负载均衡策略