直接插入排序(Straight Insertion Sorting)的基本思想是:把n个待排序的元素看成为一个有序表和一个无序表,开始时有序表中只包含一个元素,无序表中包含有n-1个元素,排序过程中每次从无序表中取出第一个元素,将它插入到有序表中的适当位置,使之成为新的有序表,重复n-1次可完成排序过程。
按照这样的思路:
package com.japher.j2se.sort;
/**
*
* @author liujie , sd4886656@163.com
* 直接插入排序
*/
public class DerectInsertSort
{
public static void main(String [] arg)
{
int [] src ={83 ,19 ,3 ,62 ,27 ,56 ,9 ,24 ,60 ,88 };
//int [] src = BubbleSort.createRandom(20, 0, 100);
int temp;
for( int i = 1 ; i < src.length ; i++)
{
for(int m = 0; m<i;m++)
{
if( src[i] < src[m])
{
temp =src[i];
for(int j = i; j>m;j--)
{
src[j] =src[j-1];
}
src[m] = temp;
}
}
}
System.out.println("END:");
for(int element : src )
{
System.out.print(element+" ");
}
}
}
输出:
END:
3 9 19 24 27 56 60 62 83 88
后来看到一段更好的代码:
void insert_sort(ElemType a[],int n)
//待排序元素用一个数组a表示,数组有n个元素
{ int i,j;
ElemType t;
for ( i=1; i<n; i++) //i表示插入次数,共进行n-1次插入
{
t=a[i]; //把待排序元素赋给t
j=i-1;
while ((j>=0)&& (t<a[j]))
{ a[j+1]=a[j]; j--; } // 顺序比较和移动
a[j+1]=t;
}
}
一般教科书上的例子都是这样写的,从待排的最右边一个一次往左比较,可以插入就将该位置右边的往右移一位。不过这样的感觉“插入”的概念变淡了很多,我自己写的是先找到符合插入条件的index,然后顺次移动index右边的所有
分享到:
相关推荐
自己写的java 插入排序算法,分享给大家,共同进步
直接插入排序 java实现~你值得拥有~
Java语言实现的直接插入排序算法,代码里头有详细注释,注释皆为简单英文,因为这个算法比较简单,欢迎新手下载学习使用,欢迎后期的学习交流!
JAVA实现插入排序,简单演示
java 代码实例 冒泡排序 直接插入排序 数组中插入数据
JAVA单链表(多项式)直接插入排序 JAVA单链表(多项式)直接插入排序
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序,包括算法的详细介绍,以及对几种算法的详细测试
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
做了个Java Swing 图形界面,选择3中排序方法进行排序。工程用NetBeans 打开,运行Main.java文件或直接点击运行主程序,...BinSort.java(折半插入排序) QKSort.java(快速排序算法) SelectSort.java(简单选择排序)
直接插入排序 前面文章已经讲完了交换类排序,接下来开始学习插入类排序。顾名思义,所谓插入排序指我们会为每一个数据安排一个适合它的位置并将其插入,直到所有数据就位则排序完成。 直接插入法便是插入排序的典型...
数据结构与算法中的直接插入排序实现,平均时间复杂度为n2亲测可用
主要介绍了java直接插入排序示例,插入排序的比较次数仍然是n的平方,但在一般情况下,它要比冒泡排序快一倍,比选择排序还要快一点。它常常被用在复杂排序算法的最后阶段,比如快速排序。
八种排序算法原理及Java实现( 冒泡排序+快速排序直接插入排序+希尔排序+选择排序+归并排序+基数排序)
主要介绍了Java实现直接插入排序和折半插入排序算法示例,文中对算法的思想和时间复杂度都有简单的讲解,需要的朋友可以参考下
主要介绍了Java编程实现直接插入排序代码示例,具有一定借鉴价值,需要的朋友可以参考下。
主要介绍了Java直接插入排序算法实现,有需要的朋友可以参考一下
直接插入排序的文字描述及java代码实现
八大排序java实现版本,直接插入排序、折半插入排序、冒泡排序、简单选择排序、希尔插入排序、快速排序 、堆排序、2-路归并排序 、基数排序,并有时间比较,博文...
Java 中的一些重要排序,比如冒泡,直接插入排序