直接插入排序(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实现的直接插入排序算法: 1. **算法步骤** - 初始化:设置一个空的有序序列,将第一个元素视为已排序。 - 遍历:从第二个元素开始遍历数组,将其称为当前元素。 - 比较:将当前元素与已...
总的来说,Java中的直接插入排序算法是一个直观易懂的排序方法,虽然在效率上不敌更高级的排序算法,但它在理解和实现上相对简单,对于初学者来说是很好的学习材料。通过阅读和实践这个源代码,你可以深入理解排序...
直接插入排序 java实现~你值得拥有~
在Java中实现插入排序,主要涉及数组操作和循环控制,我们可以从以下几个方面来理解这个过程。 1. **基本概念** 插入排序在实际操作中类似于打扑克牌,每拿到一张新牌(数组中的元素),就将其插入到已排序的序列...
JAVA实现插入排序,简单演示
本文将详细讨论两种常见的简单排序算法:冒泡排序和直接插入排序,它们都是基于比较的内部排序算法,并且在Java语言中实现。 **冒泡排序(Bubble Sort)** 冒泡排序是一种基础的排序算法,其基本思想是通过重复...
在给定的`Sort`文件中,可能包含了实现直接插入排序的源代码,通常使用C、C++、Java或Python等编程语言。这些程序会包含一个循环结构,遍历数组并进行比较、移动和插入操作。通过阅读和理解这些代码,可以加深对直接...
本文将深入探讨Java编程语言中实现的七种主要排序算法:直接插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序以及归并排序。每种算法都有其独特性,适用于不同的场景和数据特性。 1. **直接插入排序**:...
JAVA单链表(多项式)直接插入排序 JAVA单链表(多项式)直接插入排序
排序算法java版,速度排行:冒泡排序、简单选择排序、直接插入排序、折半插入排序、希尔排序、堆排序、归并排序、快速排序.mht
Java代码-排序-直接插入排序、希尔排序、直接选择排序、冒泡排序、堆排序、快速排序、归并排序中部分排序以及算法-贪心法,大家可以将源码下载下来进行学习,附带着注释和解释,有不理解的可以找博主一起探讨,共同...
在这个Java实现中,`sort`方法执行了直接插入排序的过程。`main`方法创建了一个示例数组,并调用`sort`进行排序,最后通过`printArray`方法打印排序前后的数组,以便于验证排序效果。 **性能分析:** - 时间复杂度...
本文将介绍两种常见的排序算法:直接插入排序和希尔排序,并通过Java代码实现来帮助理解。 1. 直接插入排序(直接插入排序) 直接插入排序是一种简单的排序方法,它的工作原理类似于我们平时手动整理扑克牌。在排序...
标题中的"java直接插入排序示例"是指使用Java编程语言实现的直接插入排序算法的实例。描述中提到,插入排序虽然在最坏情况下的时间复杂度仍然是O(n²),但通常情况下其效率高于冒泡排序和选择排序。这是因为插入排序...
综上所述,这段代码展示了如何使用Java实现一种特殊的插入排序,其中包含了数组的操作、条件判断以及循环控制等内容。此外,通过引入二分查找的概念,还可以进一步优化插入排序算法的性能。这种排序方法适用于较小...
### 使用Java与Python实现直接插入排序 #### 一、直接插入排序概述 直接插入排序是一种简单的排序算法,属于插入类排序。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应...
做了个Java Swing 图形界面,选择3中排序方法进行排序。工程用NetBeans 打开,运行Main.java文件或直接点击运行主程序,...BinSort.java(折半插入排序) QKSort.java(快速排序算法) SelectSort.java(简单选择排序)
数据结构与算法中的直接插入排序实现,平均时间复杂度为n2亲测可用
Java 八大排序是 Java 语言中八种常用的排序算法,分别是直接插入排序、希尔排序、简单选择排序、冒泡排序、快速排序、归并排序、堆排序和 Radix 排序。下面是对每种排序算法的详细介绍: 1. 直接插入排序 基本...
### 直接插入排序原理与Java实现 #### 排序算法概述 直接插入排序(Straight Insertion Sort)属于一种简单的内部排序方法。它的基本思想来源于我们日常生活中对一手牌进行排序的过程,即每次只考虑一个待插入的...