InsertionSort 直接插入排序(java)
排序思想:
相当于一堆数字,一开始先取出2个数排序,2个数排好序之后,再从一堆数字里面取一个数排序,直到结束
伪代码:
INSERTION_SORT(A)
for j = 2 to A.length
key = A[j]
//Insert A[j] into sorted sequence A[1...j-1].
i = j - 1
while i>0 and A[i]>key
A[i+1] = A[j]
i = i - 1
A[i + 1] = key
代码:
import java.io.*;
public class InsertionSort{
public static void InsertionSort(int[] A){
//从第二个元素开始循环
for(int i=1;i<A.length;i++){
//得到需要排序的数
int key = A[i];
//跟之前排好序的最大的元素开始比较,此时j为之前排好序的最大的元素的下标
int j = i - 1;
//循环比较,直到这个数>前一个数并且<后一个数
while(j>=0&&A[j]>key){
//比这个数大,则之前的数往后移
A[j+1] = A[j];
j = j - 1;
}
//把这个数放入数组中
A[j + 1] = key;
}
}
public static void main(String[] args) {
int[] A = { 4, 6, 9, 10, 5, 3};
InsertionSort(A);
for(int a: A){
System.out.print(a+" ");
}
}
}
InsertionSort 直接插入排序(java)的更多相关文章
- 插入排序Java版
package dataStructureAlgorithmReview.day01; import java.util.Arrays; /** * 插入排序 * @author shundong * ...
- 基本排序算法——插入排序java实现
插入排序过程: 在初始状态下,第一个元素是排序的,在最终状态下,作为一组数据时排序的. 代码如下;eclipse4.3实现 package sort.basic; import java.util.A ...
- 插入排序-java
排序-插入排序 基本思想:将待排序表看作左右两部分,其中左边为有序区,右边为无序区, 整个排序过程就是将右边无序区中的元素逐个插入到左边的有序区中,以构成新的有序区. 平均时间:O(n2) 最好情况: ...
- 插入排序(Java实现)
直接插入排序 public class InsertionSort { public static <T extends Comparable<? super T>> void ...
- 排序算法之直接插入排序Java实现
排序算法之直接插入排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb 选择排序:http://t.cn/hros6e 插入排序: ...
- InsertionSort(插入排序)原理及C++代码实现
插入排序是最常用的排序之一. 在输入规模较小的时候,插入排序的性能较好. 最好情况下插入排序的时间复杂度是O(n),平均情况则为O(n2). 插入排序是稳定的排序算法之一. 基本思路为从第二个元素开始 ...
- 插入排序java代码
/** * 插入排序 * * 原理:从数组中取出一个值插入到一个左边已经排好序的数组片段中 * * @param a * @return */ public long[] InsertSort(lon ...
- 插入排序java
插入排序简述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据. 第一个元素是有序队列,从第二个元素开始向有序队列中插入,插入完成后将第三个元素向 ...
- 直接插入排序---java实现
思路:遍历无序的原数组,把第i个的后一个即i+1去与前面的i个逐个比较... 解法一: package com.sheepmu.text; import java.util.Arrays; /* * ...
随机推荐
- 【原创】uWSGI http和http-socket说明
http 和 http-socket的使用上有一些区别: http: 自己会产生一个http进程(可以认为与nginx同一层)负责路由http请求给worker, http进程和worker之间使用的 ...
- reactor模型框架图和流程图 libevent
学习libevent有助于提升程序设计功力,除了网络程序设计方面外,libevent的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏.函数指针.c语言的多态支持.链表和堆等等,都有助于提升自身 ...
- 最新版的Chrome 69.0 设置始终开启flash而不是先询问
## 69.0 之前的版本 ## 1.打开 chrome://settings/content/flash 2.禁止网站运行Flash -> 改为“Ask (Default)” 3. ...
- vux UI 项目国际化
第一步必须装 vux vux-loader vuex 和vuex-i18n npm i vux-loader -D npm i vuex vux vuex-i18n -S 安装完成需要配置webpac ...
- 多线程并发容器CopyOnWriteArrayList
原文链接: http://ifeve.com/java-copy-on-write/ Copy-On-Write简称COW,是一种用于程序设计中的优化策略.其基本思路是,从一开始大家都在共享同一个内容 ...
- Java日志框架中真的需要判断log.isDebugEnabled()吗?
在项目中我们经常可以看到这样的代码: if (logger.isDebugEnabled()) { logger.debug(message); } 简单来说,就是用isDebugEnabled方法判 ...
- maven +IEDA+log4j
一.pom.xml加入log4j的依赖包 <!-- 日志文件管理包 --><dependency> <groupId>log4j</groupId> ...
- (转)一次压测对nginx/tomcat配置的调整
原文地址:还在寻找.... 一个web系统,前端使用nginx做为反向代理,处理https,并将请求转发给后端的tomcat服务. 压力测试工具选择了jmeter. 首先简单介绍一下jmeter. 它 ...
- nRF5282 资料链接帖子
官方硬件设计参考
- DQL-联合查询
一.含义union:合并.联合,将多次查询结果合并成一个结果二.语法查询语句1union [all]查询语句2union [all]... 三.意义1.将一条比较复杂的查询语句拆分成多条语句2.适用于 ...