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; /* * ...
随机推荐
- SQL触发器与CLR的使用
在数据库的日常操作中,面对复杂业务的情况下,总会有用sql语句或存储过程不是那么方便的时候,所以这时候就会想到在数据库中调用CLR,也就是调用程序集,此处用C#实现来讲解一个测试案例 测试案例的业务是 ...
- echarts问题
1.鼠标经过折线图 显示的框中的文字设置,需要设置tooltip下的formatter属性 formatter属性值可以为字符串也可function formatter:function(data) ...
- ios的图片解压
YYKit SDWebImage FLAnimatedImage YYKit YYCGImageCreateDecodedCopy YYImageCoder 1 2 3 4 5 6 7 8 9 10 ...
- 谷歌希望让 Swift 成为安卓的优先选择,以取代由 Oracle 开发的 Java 程序语言。
http://news.coolban.com/Web/Index/land/app/2/id/405239
- [JSOI2008]火星人
嘟嘟嘟 嗯. splay维护哈希. 如题,用splay维护哈希,查找的时候二分.所以复杂度是取决于询问复杂度:\(O(n \log^ 2{n})\). 这道题还有一个技巧,就是一个节点记录的是他的子树 ...
- Python之Tornadoweb框架使用
本文主要讲解Tornadoweb框架的安装和介绍及其简单使用. 一. 安装介绍 Tornado是一个Python Web框架和异步网络库,最初是在FriendFeed上开发的.通过使用非阻塞网络I / ...
- Python:基础知识(二)
常用模块 urllib2 :用于发送网络请求,获取数据 (Pyhton2中的urllib2工具包,在Python3中分拆成了urllib.request和urllib.error两个包.) json: ...
- bootstrap组件-导出数据
一.需求:在我们日常工作的时候,对数据的导出有需求.比如导出JSON.XML.SQL等形式.方便我们日常使用. 二.组件:我们可以使用bootstrap的扩展插件Table Export来实现我们的需 ...
- PATtest1.3:最大子列和
题目源于:https://pintia.cn/problem-sets/16/problems/663 题目要求:输入一个数列,求其最大子列和. 问题反馈:1.部分C++代码不是很熟练 2.没有仔细读 ...
- 【取色】ColorMania
取色剂软件