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

java直接插入排序

阅读更多
直接插入排序算法,含部分理解,不知道对不对,但是看例子是可以看明白的。
下图有助理解,于是截图看看:



public int[] insertSort(int[] a) {
/**
 * 直接插入排序
 * 把第一个数作为基准,所以排序的循环次数为n-1次 从第二个数开始和第一个数比较
 * 下面是降序排列
 * a[i] < a[i - 1] 如果第二个数小于第一个数,将第二个数记录一下int tmp = a[i]
 * 对前面的有序集合进行插入操作 j=i-1
 * (永远是对当前需要排序的值,插入到前面已经有序的集合里)
 * 从0到i-1 的空间里找出需要插入的位置
 *for (; j >= 0 && tmp< a[j]; j--) 
 *将数据向后移动 直到找到合适的位置 
 *eg: 假如 i = 3,此时j=2 对下面做插入操作
 *(26 48 53) 11 13 48 32 15
 * 0   1  2   3  4  5  6  7 
 * 11<53 则  a[3] = a[2] =53; 此时空出来53的位置 即a[2] 下面接着循环
 * 11<48 则  a[2] = a[1] = 48 把 a[1] 的位置让出来了。继续
 * 11<26 则  a[1] = a[0] = 26 把a[0] 位置的26 赋值给了a[1] 位置,让出a[0] 
 * 循环到了尽头,此时j<0 j=-1 
 * a[j+1] = tmp; 把值插入进去 把这个小的数据插入进去就可以了。

 *a[j + 1]=	a[j] ;
 *
 *
 *a[j+1] = tmp; 把值插入进去
 *
 * 
 */
	for(int i=1;i<a.length;i++){
		if(a[i]<a[i-1]){
			int tmp = a[i], j = i-1; //从后向前对有序的数进行插入,循环的长度应该是当前操作数的前一个数的索引位置。
			//eg:当前操作的是第4个数索引是3,那么插入操作就要针对前面的三个数做,即:j = 3-1=2 即(0-2)这些索引数里面操作。
			//下面for循环是:只要比当前操作数大就向后移动一位,让出当前位,如果比当前值小,直接插入到此值的后面
			for(;j>=0&&tmp<a[j];j--){
				a[j+1] = a[j];
			}
			a[j+1] = tmp;
		}
	}
	return a;
	}

	public static void main(String[] args) {
		InsertSort is = new InsertSort();
		int[] as = { 1, 34, 56, 23, 67, 82, 4, 3, 2, 0, 13, 76, 90, 21, 24, 44,
				4 };
		int[] a = is.insertSort(as);
		System.out.println(Arrays.toString(a));
	}


运行结果:[0, 1, 2, 3, 4, 4, 13, 21, 23, 24, 34, 44, 56, 67, 76, 82, 90]
  • 大小: 32.1 KB
分享到:
评论

相关推荐

    java 直接插入排序

    下面我们将详细探讨Java实现的直接插入排序算法: 1. **算法步骤** - 初始化:设置一个空的有序序列,将第一个元素视为已排序。 - 遍历:从第二个元素开始遍历数组,将其称为当前元素。 - 比较:将当前元素与已...

    Java直接插入排序算法源码

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

    直接插入排序java源码

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

    java直接插入排序示例

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

    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 直接插入排序的三种实现

    在Java中,直接插入排序可以有多种实现方式,这里我们讨论三种不同的实现: 1. **基础实现(Insertsort1)** 这是最基础的实现,通过两个嵌套循环来完成。外层循环遍历数组中的每一个元素,内层循环则用于找到当前...

    JAVA 8种排序介绍及实现

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

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

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

    java插入排序

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

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

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

    Java编程实现直接插入排序代码示例

    "Java编程实现直接插入排序代码示例" 直接插入排序是一种简单的排序算法,它的平均时间复杂度为O(n^2),空间复杂度为O(1),且是一种稳定的排序算法。下面是 Java 编程实现直接插入排序代码示例的详细解释: 首先,...

Global site tag (gtag.js) - Google Analytics