java 主流算法_java常用算法
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常用算法相关推荐
- java常见的算法_Java常用算法总结(转)
交换排序 冒泡排序 将最后一个元素与倒数第二个元素对比,如果最后一个元素比倒数第二个小,则交换两个元素的位置,再用倒数第二个元素与倒数第三个元数对比,直到比到第一个元素,这样经过第一趟排序后得到第一个 ...
- java基础排序_Java排序算法-Java入门|Java基础课程
1. 课程目标排序是任何语言都会使用到的功能之一,然成果排序的算法有很多,对空间的要求及其时间效率也不尽相同. 本文章以Java语言示例,通过对空间要求.时间效率要求,来对比各种排序算法的使用场景 2 ...
- 【数据结构与算法】常用算法
五大常用算法 分治 动态规划 最优子结构 边界 状态转移函数 爬楼梯问题: 4. 最优子结构 F(10)的最优子结构为F(9)和F(8) 5. 边界 F(1) = 1 F(2) = 2 6. 状态转移 ...
- java 比较器类_java常用类——比较器
Comparable和Comparator接口都是为了对类进行比较,众所周知,诸如Integer,double等基本数据类型,java可以对他们进行比较,而对于类的比较,需要人工定义比较用到的字段比较 ...
- java 性能 排序_Java常用排序算法及性能测试集合
package algorithm.sort; import java.lang.reflect.Method; import java.util.Arrays; import java.util.D ...
- java 类数组_Java常用类-字符串、日期类、算法及数组工具类等
大家好,乐字节的小乐又和大家见面了.这次要给大家讲述的是Java常用类. 主要有以下知识点: Ø 字符串相关类(String .StringBuffer.StringBuilder) Ø 算法及数组工 ...
- java 常用算法_Java常见算法整理
兔子问题(斐波那契数列规律) 台阶问题 (兔子问题变种,递归规律) 素数问题(判断素数.质数方式) 水仙花数问题(数字分解) 查找算法(二分查找) 排序算法(选择排序,冒泡排序,快速排序) 兔子问题, ...
- java基础_数组常用算法
求数组最大值代码如下 package java_test; /*求数组的最大值* */ class Sdent{public void inputMax(int [] a){int max=a[0]; ...
- java基础之算法_java基础算法
package com.sxwl; import org.springframework.boot.SpringApplication; import org.springframework.boot ...
- java程序两点之间最短路径算法_java 最短路径算法 如何实现有向 任意两点的最短路径...
展开全部 Dijkstra(迪杰斯特拉)算法是典型的最短路径路由算法,用于计算一个节点到其他所有节e68a8462616964757a686964616f31333361316131点的最短路径.主要 ...
最新文章
- 1到10选一个数字读心术_厉害了!quot;广东110“互联网报警满足您多场景报警需求!...
- 字符与字符串操作——Windows via C/C++
- Android ARM指令学习
- 10.傅里叶变换——达利画家、基集(Basis Set)、傅里叶级数(Fourier Series)_1
- WebSocket使用,包括服务端和客户端(JAVA实现)
- mysql 多实例 独立配置文件_mysql 5.7 配置多实例 — 独立配置文件方式
- 6、mysql与suse查看版本信息
- 2022年,想自学java有没有一个详细的框架?
- limesurvey php5.2,Limesurvey二次开发(接入CAS统一身份认证)随笔
- web处理html标记,web前端学习-----HTML标记
- python文件操作实现全文或单行替换
- 基于ubuntu 20.04与cri-docker 搭建部署高可用k8s 1.25.3
- python记忆式键入,在Python编程模式下输入命令”print(100+200)“执行的结果是()
- 快递到车服务的实现思路和问题思考
- 音频文件格式转换 转为 wav格式
- IDC:爱数再次蝉联备份一体机市场中国品牌第一
- VC++ 通过wmic获取主板和BIOS序列号
- 《layui宇宙版教程》:字体图标
- 网页图片快速显示的六种办法
- Rust actix aiohttp_介绍 - actix-web 中文文档 - Rust-Web 开发指南