直接插入排序(java实现)
这几天看排序算法,网上大多数排序算法的解释都是“过于专业”,导致一时半会看不明白到底在说什么玩意。现在总结下几大排序算法(java实现)
1.直接插入排序
说的简单点,就是一组无序序列{A1,A2,........An} 先取出A1,然后从A2与A1比较,比较完之后序列状况是{A1,A2}{A3..........An}, 其中{A1,A2}有序, 然后取出A3 ,放到{A1,A2}有序序列合适位置,导致{A1,A2,A3}{A4........An}。重复这个过程,直到取出An放入{A1,A2........An-1}有序序列中。
java实现代码如下(利用LinkedList作为辅助序列)
/**
* 直接插入排序
* @param arrays 需要排序的序列
*/
public static void sort(int[] arrays){
if(arrays == null || arrays.length == 0){
return;
} //辅助序列
LinkedList<Integer> list = new LinkedList<Integer>();
//先取出无序序列的第一个元素
list.add(arrays[0]);
//从第二个元素依次遍历,放入辅助序列(有序)的合适位置
for(int index = 1; index<arrays.length; index++){
for(int listIndex = 0;listIndex<list.size();listIndex++){
//一直遍历,直到找到比自己大的数,放在这个数前面
if(arrays[index] < list.get(listIndex)){
list.add(listIndex, arrays[index]);
break;
}
//如果遍历到末尾还没有找到比自己大的数,直接放最后一个位置
if(listIndex==list.size()-1 && list.get(listIndex) < arrays[index]){
list.add(arrays[index]);
}
}
}
for(int i = 0; i<list.size();i++){
arrays[i] = list.get(i);
}
}
直接插入排序(java实现)的更多相关文章
- 基本排序算法——插入排序java实现
插入排序过程: 在初始状态下,第一个元素是排序的,在最终状态下,作为一组数据时排序的. 代码如下;eclipse4.3实现 package sort.basic; import java.util.A ...
- 插入排序-java
排序-插入排序 基本思想:将待排序表看作左右两部分,其中左边为有序区,右边为无序区, 整个排序过程就是将右边无序区中的元素逐个插入到左边的有序区中,以构成新的有序区. 平均时间:O(n2) 最好情况: ...
- 插入排序Java版
package dataStructureAlgorithmReview.day01; import java.util.Arrays; /** * 插入排序 * @author shundong * ...
- 排序算法之直接插入排序Java实现
排序算法之直接插入排序 舞蹈演示排序: 冒泡排序: http://t.cn/hrf58M 希尔排序:http://t.cn/hrosvb 选择排序:http://t.cn/hros6e 插入排序: ...
- 插入排序java代码
/** * 插入排序 * * 原理:从数组中取出一个值插入到一个左边已经排好序的数组片段中 * * @param a * @return */ public long[] InsertSort(lon ...
- 插入排序java
插入排序简述 插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的.个数加一的有序数据. 第一个元素是有序队列,从第二个元素开始向有序队列中插入,插入完成后将第三个元素向 ...
- 直接插入排序---java实现
思路:遍历无序的原数组,把第i个的后一个即i+1去与前面的i个逐个比较... 解法一: package com.sheepmu.text; import java.util.Arrays; /* * ...
- 插入排序(Java实现)
直接插入排序 public class InsertionSort { public static <T extends Comparable<? super T>> void ...
- 数据结构排序算法插入排序Java实现
public class InsertDemo { public static void main(String args[]) { int[] sort ={4,2,1,3,6,5,9,8,10,7 ...
- 插入排序——Java实现
一.排序思想 从数组第一个元素开始(0下标),该元素可以认为已经被排序: 取出待排序列中第一个元素,然后从“有序”序列中,从后往前扫描: 如果该元素(有序序列)大于待插入元素(待排序列),将该元素后移 ...
随机推荐
- 题解 P4613 【[COCI2017-2018#5] Olivander】
话说这道题,作为一个哈迷,是不能错过的 我很惊讶本蒟蒻竟然看得懂题面 好了,闲话少说,这道题,虽说是入门难度,但凭着良心说,它还是一道普及 - 的吧 看到标签,“高性能”,大脑的第一反应是快读. 是不 ...
- Websocket教程SpringBoot+Maven整合(详情)
1.大话websocket及课程介绍 简介: websocket介绍.使用场景分享.学习课程需要什么基础 笔记: websocket介绍: WebSocket协议是基于TCP的一种新的网络协议.它实现 ...
- Linux入门-第八周
1.用shell脚本实现自动登录机器 #!/usr/bin/expectset ip 192.168.2.192set user rootset password rootspawn ssh $use ...
- 文档对象模型 DOM
1 DOM概述 1.1 什么是DOM 文档对象模型 Document Object Model 文档对象模型 是表示和操作 HTML和XML文档内容的基础API 文档对象模型,是W3C组织推荐的处理可 ...
- 【Ecshop】将内置的 FCkeditor 更换为 UEditor
1.下载UE,解压到includes/,更名目录名为ueditor 注意更改配置后端文件上传路径,参考文档 2.修改admin/includes/lib_main.php,添加 /** * 生成编辑器 ...
- c#:无限极树形结构
最近一直在研究树形结构菜单,无意中让我弄了出来.先上代码: 首先需要这个的一个类 public class Tree { public int id { get; set; } public stri ...
- Java课堂作业详解
今天的Java课堂留下了一个作业:使用Eclipse编写一个程序,使输入的两个数进行加和,并且输出他们的和.对于这个题目,我们首先可以把它分解成为三个不同的小步骤 第一步就是输入这两个数,因为我们无需 ...
- Nosql和RDBMS的比较及解释
概述 传统的关系型数据库以及数据仓库在面对大数据的处理时显得越来越力不从心.因为关系数据库管理系统 (RDBMS)的设计从未考虑过能够处理日益增长且格式多变的数据,以及访问数据并进行分析的用户需求呈爆 ...
- Java中创建(实例化)对象的五种方式
Java中创建(实例化)对象的五种方式1.用new语句创建对象,这是最常见的创建对象的方法. 2.通过工厂方法返回对象,如:String str = String.valueOf(23); 3.运用反 ...
- poj 3273 分期问题 最大化最小值
题意:将N个账款分给城M个财务期,使得每个分期账款和的值最大? 思路: 每次mid为分期账款 如果分期次数小于m说明mid太大,减上限 反正 增下限 开始下限设为 最大值 上限设为和 解决问题的代码 ...