`
sd4886656
  • 浏览: 89960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[原]Java 直接插入排序

 
阅读更多

直接插入排序(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实现的直接插入排序算法: 1. **算法步骤** - 初始化:设置一个空的有序序列,将第一个元素视为已排序。 - 遍历:从第二个元素开始遍历数组,将其称为当前元素。 - 比较:将当前元素与已...

    Java直接插入排序算法源码

    总的来说,Java中的直接插入排序算法是一个直观易懂的排序方法,虽然在效率上不敌更高级的排序算法,但它在理解和实现上相对简单,对于初学者来说是很好的学习材料。通过阅读和实践这个源代码,你可以深入理解排序...

    直接插入排序java源码

    直接插入排序 java实现~你值得拥有~

    java实现插入排序

    在Java中实现插入排序,主要涉及数组操作和循环控制,我们可以从以下几个方面来理解这个过程。 1. **基本概念** 插入排序在实际操作中类似于打扑克牌,每拿到一张新牌(数组中的元素),就将其插入到已排序的序列...

    JAVA实现插入排序

    JAVA实现插入排序,简单演示

    冒泡排序、直接插入排序 等java代码

    本文将详细讨论两种常见的简单排序算法:冒泡排序和直接插入排序,它们都是基于比较的内部排序算法,并且在Java语言中实现。 **冒泡排序(Bubble Sort)** 冒泡排序是一种基础的排序算法,其基本思想是通过重复...

    数据结构中的直接插入排序

    在给定的`Sort`文件中,可能包含了实现直接插入排序的源代码,通常使用C、C++、Java或Python等编程语言。这些程序会包含一个循环结构,遍历数组并进行比较、移动和插入操作。通过阅读和理解这些代码,可以加深对直接...

    JAVA排序算法: 直接插入,希尔排序,选择排序,堆排序,冒泡排序,快速排序,归并排序

    本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...

    JAVA单链表(多项式)直接插入排序

    JAVA单链表(多项式)直接插入排序 JAVA单链表(多项式)直接插入排序

    排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht

    排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法

    Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...

    排序算法-直接插入排序

    在这个Java实现中,`sort`方法执行了直接插入排序的过程。`main`方法创建了一个示例数组,并调用`sort`进行排序,最后通过`printArray`方法打印排序前后的数组,以便于验证排序效果。 **性能分析:** - 时间复杂度...

    JAVA 8种排序介绍及实现

    本文将介绍两种常见的排序算法:直接插入排序和希尔排序,并通过Java代码实现来帮助理解。 1. 直接插入排序(直接插入排序) 直接插入排序是一种简单的排序方法,它的工作原理类似于我们平时手动整理扑克牌。在排序...

    java直接插入排序示例

    标题中的"java直接插入排序示例"是指使用Java编程语言实现的直接插入排序算法的实例。描述中提到,插入排序虽然在最坏情况下的时间复杂度仍然是O(n²),但通常情况下其效率高于冒泡排序和选择排序。这是因为插入排序...

    java插入排序

    综上所述,这段代码展示了如何使用Java实现一种特殊的插入排序,其中包含了数组的操作、条件判断以及循环控制等内容。此外,通过引入二分查找的概念,还可以进一步优化插入排序算法的性能。这种排序方法适用于较小...

    使用Java与Python十大排序算法之直接插入排序

    ### 使用Java与Python实现直接插入排序 #### 一、直接插入排序概述 直接插入排序是一种简单的排序算法,属于插入类排序。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应...

    Java快速排序+简单选择排序+折半插入排序

    做了个Java Swing 图形界面,选择3中排序方法进行排序。工程用NetBeans 打开,运行Main.java文件或直接点击运行主程序,...BinSort.java(折半插入排序) QKSort.java(快速排序算法) SelectSort.java(简单选择排序)

    直接插入排序

    数据结构与算法中的直接插入排序实现,平均时间复杂度为n2亲测可用

    java 八大排序

    Java 八大排序是 Java 语言中八种常用的排序算法,分别是直接插入排序、希尔排序、简单选择排序、冒泡排序、快速排序、归并排序、堆排序和 Radix 排序。下面是对每种排序算法的详细介绍: 1. 直接插入排序 基本...

    直接插入排序的文字描述及java代码实现

    ### 直接插入排序原理与Java实现 #### 排序算法概述 直接插入排序(Straight Insertion Sort)属于一种简单的内部排序方法。它的基本思想来源于我们日常生活中对一手牌进行排序的过程,即每次只考虑一个待插入的...

Global site tag (gtag.js) - Google Analytics