java之插入排序

//插入排序(Insertion
Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始有序表只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,把它的排序码依次与有序表元素的排序码进行比较,将它插入到有序表中的适当位置,使之成为新的有序表。

public static void main(String []args){

   int arr[]={23,15,-13,62,5,-23,0,17};

     for(int
i=1;i<arr.length;i++){

        int
insertVal=arr[i];

       
//insertVal
准备和前一个数比较

        int
index=i-1;

       
while(index>=0&&insertVal<arr[index]){

          
//
将把arr[index]向后移动一位

         
arr[index+1]=arr[index];

         
//
让index向前移动一位

         
index--;

        }

       
//
将insertVal插入到适当位置

       
arr[index+1]=insertVal;

     }

     //输出最后结果

     for(int
i=0;i<arr.length;i++){

       
System.out.print(arr[i]+"\t");

     } 

   }

java之插入排序,布布扣,bubuko.com

时间: 2024-08-11 03:27:37

java之插入排序的相关文章

java算法插入排序优化代码

原文:java算法插入排序优化代码 代码下载地址:http://www.zuidaima.com/share/1550463280630784.htm 一个细节让插入排序更具效率 运行此方法需要为main方法传递参数 package com.zuidaima.sort; /** *@author www.zuidaima.com **/ public class TestSort { public static void main(String args[]){ int l = args.len

JAVA排序--[插入排序]

1 package com.array; 2 3 public class Sort_Insert { 4 /* 5 * 项目名称:插入排序 ; 6 * 项目要求:用JAVA对数组进行排序,并运用插入排序算法; 7 * 作者:Sevck; 8 */ 9 public void sort(int arr[]) { 10 for (int i = 1; i < arr.length; i++) { 11 int insertval = arr[i]; 12 int index = i - 1; 13

疯狂的Java算法——插入排序,归并排序以及并行归并排序

从古至今的难题 在IT届有一道百算不厌其烦的题,俗称排序.不管是你参加BAT等高端笔试,亦或是藏匿于街头小巷的草根笔试,都会经常见到这样一道百年难得一解的问题. 今天LZ有幸与各位分享一下算法届的草根明星,排序届的领衔大神——插入排序以及归并排序.最后,在头脑风暴下,LZ又有幸认识了一位新朋友,名叫并行归并排序.接下来,咱们就一一认识一下,并且在最后来一次“算林大会”吧. 插入排序简介 插入排序,算林称最亲民的排序算法,插入排序采用最简单的插入方式对一个整数数组进行排序.它循环数组中从第二个开始

java 直接插入排序

package datastructure.maskedmen.sort; import java.util.Arrays; /** * @author MaskedMen *直接插入排序   时间复杂度:O(n2) */ public class InsertSort { public static void main(String[] args) { int[] array = {15,6,2,9,5,10,3,18,1}; System.out.println("原数组为:"+A

java实现插入排序

一.基本思想 通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应的位置并插入. 插入排序非常类似于整扑克牌. 在开始摸牌时,左手是空的,牌面朝下放在桌上.接着,一次从桌上摸起一张牌,并将它插入到左手一把牌中的正确位置上.为了找到这张牌的正确位置,要将它与手中已有的牌从右到左地进行比较.无论什么时候,左手中的牌都是排好序的. 如果输入数组已经是排好序的话,插入排序出现最佳情况,其运行时间是输入规模的一个线性函数.如果输入数组是逆序排列的,将出现最坏情况.平均情况与最坏情况一样,

java折半插入排序

代码如下: public class BinaryInsertSort { public static void binaryInsertSort(DataWrap [] data) { System.out.println("开始排序:"); int length = data.length; for(int i = 1;i < length;i++) { //当整体后移时,保证data[i]的值不会丢失 DataWrap tmp = data[i]; int low = 0;

Java算法-插入排序

插入排序的基本思想是在遍历数组的过程中,假设在序号 i 之前的元素即 [0..i-1] 都已经排好序,本趟需要找到 i 对应的元素 x 的正确位置 k ,并且在寻找这个位置 k 的过程中逐个将比较过的元素往后移一位,为元素 x “腾位置”,最后将 k 对应的元素值赋为 x ,插入排序也是根据排序的特性来命名的. 插入排序的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入.其具体步骤参见代码及注释. 以下是一个实例,红色 标记的数字为插入的数字,被划掉的数

Java学习-插入排序2-希尔排序

希尔排序: 1.基本思路: 先取一个小于n的整数d1作为一个增量,把数组中的数分为d1组,i+d1个数分别为一组,对每个组内的数进行直接插入排序.取第二个数d2<d1作为第二个增量,重复第一步的分组和排序,直至d=1,即所有记录放在同一组中进行直接插入排序为止,希尔排序的实质就是分组进行直接插入排序. //**数据结构书上讲的有关于希尔排序的方法,,作为一种基础排序方法,还是要掌握滴**// 2:实例 解释一下:当一次增量为5时,57和28是一组,68和96是一组,59和33是一组,52和24是

java的插入排序

import java.util.Scanner;public class test22 { public static void main(String[] args) {  Scanner in=new Scanner(System.in);  int[] arr={23,62,57,78,43};  System.out.println("请输入要插入的值");     int num=in.nextInt();  arr[arr.length-1]=num;  for(int