插入排序java
插入排序简述
插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。
第一个元素是有序队列,从第二个元素开始向有序队列中插入,插入完成后将第三个元素向有序队列中插入,依次进行,直到将最后一个元素插入完毕。
在将元素插入到有序队列中,要将这个元素与有序队列的元素依次比较,如果小于有序队列的某个元素,将其插入到该元素的前面,否则不做操作。依次比较完毕,没有比其大的,就将其放在有序队列的末尾。
图例介绍:

代码:
插入排序类
package com.dxx.order;
public class InsertSort {
private int arrs[];
public InsertSort(int[] arrs) {
super();
this.arrs = arrs;
}
public void sortArrs(){
int len = arrs.length;
int temp = 0;
//进行len-1次循环,每次循环都将下标为i的元素插入到它前面已经排好序的队列中
for(int i=1;i<len;i++){
//进行i次循环,每次循环都将下标为i的元素与下标为j的元素比较,找到比它小的元素,然后插入到那个元素前面,如果一直没有比它小的元素,就不做操作
for(int j=0;j<i;j++){
if(arrs[j]>arrs[i]){
temp = arrs[i];
for(int k = i;k>j;k--){
arrs[i] = arrs[i-1];
}
arrs[j] = temp;
}
//另一种插入算法
public void sortArrs2(){
int len = arrs.length;
int temp = 0;
//进行len-1次循环,每次循环都将下标为i的元素插入到它前面已经排好序的队列中
for(int i=1;i<len;i++){
if(arrs[i]<arrs[i-1]){
temp = arrs[i];
while( i>0 && temp<arrs[i-1]){
arrs[i]=arrs[i-1];
i--;
}
arrs[i] = temp; }
}
}
}
}
}
public void printArrs(){
for(int i :arrs){
System.out.print(i + " ");
}
System.out.println();
}
}
主程序类:
package com.dxx.order;
public class MainTest {
public static void main(String[] args) {
int arrs[] = {1,3,2,5,4,8,6,7};
InsertSort insertSort = new InsertSort(arrs);
insertSort.printArrs();
insertSort.sortArrs();
insertSort.printArrs();
}
}
插入排序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实现
思路:遍历无序的原数组,把第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下标),该元素可以认为已经被排序: 取出待排序列中第一个元素,然后从“有序”序列中,从后往前扫描: 如果该元素(有序序列)大于待插入元素(待排序列),将该元素后移 ...
随机推荐
- KMP(Knuth-Morris-Pratt)算法
一.朴素匹配算法 也就是暴力匹配算法.设匹配字符串的长度为n,模式串的长度为m,在最坏情况下,朴字符串匹配算法执行时间为O((n - m + 1)m). 假设m = n / 2, 那么该算法的复杂度就 ...
- 当Scheduler拿不到url的 时候,不能立即退出
在webmagic的多线程抓取中有一个比较麻烦的问题:当Scheduler拿不到url的 时候,不能立即退出,需要等到没抓完的线程都运行完毕,没有新url产生时,才能退出.之前使用Thread.sle ...
- java之jvm学习笔记二(类装载器的体系结构)
java的class只在需要的时候才内转载入内存,并由java虚拟机的执行引擎来执行,而执行引擎从总的来说主要的执行方式分为四种, 第一种,一次性解释代码,也就是当字节码转载到内存后,每次需要都会重新 ...
- Linux下一个简单的日志系统的设计及其C代码实现
1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...
- Eclipse乱码怎么办
Eclipse里设置编码有三个层次:全局.工程.文件. 文件的编码会覆盖工程的编码,工程的编码会覆盖全局的编码. 我猜测:虽然你的工程编码更改为GBK,但只对新建文件有效. 如果工程中旧有的文件是UT ...
- HTML5 Canvas动画效果实现原理
在线演示 使用HTML5画布可以帮助我们高速实现简单的动画效果.基本原理例如以下: 每隔一定时间绘制图形而且清除图形,用来模拟出一个动画过程,能够使用context.clearRect(0, 0, x ...
- MTK Android Driver:GPIO
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2JrODYxMTEw/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA ...
- 架设FLASH视频流server心得
什么样的情况下才使用FMS?有下面几种情形的时候,你可能须要用到FMS 1.须要通过Flash Player 播放视频,而视频是以流的方式,而不是http渐进式下载的方式进行播放的时候.渐进式下载就是 ...
- win 开机 Microsoft corparation 滚动栏
在easybcd里设置 后保存!
- xcode 改动整个项目名
目标为:将项目名XCD4改成xcd5. 先上结果图:==> 1.在左側的导航区域点击两次项目名,两次间隔时间略微长些,项目名会变成可编辑状态. 将名称改动为xcd5后按enter键弹出一个对话框 ...