`
leihongtai2010
  • 浏览: 14611 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

直接插入排序算法分析与实现

阅读更多
排序基本思想:
    从第二个元素开始,用这个元素依次与其前面的每一个元素比较,如大于该元素则将改元素向后移动一个位置直到找到比这个元素小的位置(或者到第一个结束)将这个元素放到改元素的后面即完成排序

算法图示



java代码实现
package com.leiht.sort;

/**
 * 直接排序算法java简单实现
 * 
 * @author Leiht
 * @date 2015-11-10
 */
public class SortDirect {
	public static void main(String[] args) {

		int[] numbers = { 56, 45, 78, 67, 99, 13, 34, 49, 55, 34, 12, 77, 1 };
		System.out.println("排序之前:");
		for (int i = 0; i < numbers.length; i++) {
			System.out.print(numbers[i] + " ");
		}

		// 直接插入排序
				for(int i = 1; i < numbers.length; i++) {
					int temp = numbers[i];
					int j;
					//从第i-1个,即前一个开始往前,如果比当前数据(temp)大,则向后移动一个位置,
					//直到比当前小,跳出循环
					for(j = i-1; j >= 0; j--) {
						if(numbers[j] > temp) {
							numbers[j+1] = numbers[j];
						}else {
							break;
						}
					}
					//将当前数据temp放到J+1的位置,J位置数据比当前数据小
					numbers[j+1] = temp;
				}

		System.out.println();
		System.out.println("排序之后:");
		for (int i = 0; i < numbers.length; i++) {
			System.out.print(numbers[i] + " ");
		}
	}
}


分析(稳定性与时间复杂度)
    直接插入排序是稳定的排序,可以理解为当两个元素相同的时候不会交换两个元素的位置
    文件初态不同时,直接插入排序所耗费的时间有很大差异。若文件初态为正序,则每个待插入的记录只需要比较一次就能够找到合适的位置插入,故算法的时间复杂度为O(n),这时最好的情况。若初态为反序,则第i个待插入记录需要比较i+1次才能找到合适位置插入,故时间复杂度为O(n2),这时最坏的情况。

  直接插入排序的平均时间复杂度为O(n2)
  • 大小: 54.8 KB
分享到:
评论

相关推荐

    数据结构排序算法汇总包-直接插入排序 折半插入排序 2—路插入排序 表插入排序 希尔排序 起泡排序 快速排序 简单选择排序 树形选择排序 堆排序 归并排序链式基数排序

    实现以下常用的内部排序算法并进行性能比较:"直接插入排序"," 折半插入排序"," 2—路插入排序"," 表插入排序"," 希尔排序"," 起泡排序"," 快速排序"," 简单选择排序"," 树形选择排序"," 堆排序"," 归并排序"," 链式...

    常用排序算法分析与实现(Java版)

    用java对常用排序算法进行分析与实现.包含: 插入排序 直接插入排序、希尔排序 • 选择排序 简单选择排序、堆排序 • 交换排序 冒泡排序、快速排序 • 归并排序 • 基数排序

    堆排序与直接插入排序算法的比较

    本文通过对堆排序和直接插入排序算法的实现和比较,分析它们的优缺点,并讨论在不同场景下的应用。结果表明,堆排序的时间复杂度优于直接插入排序,但堆排序是不稳定的。因此,在实际应用中,需要根据具体情况选择...

    排序算法(C语言实现)

    本资源提供了三种经典的排序算法的C语言实现:堆排序、直接插入排序和快速排序。 首先,让我们详细了解这些排序算法。 1. **直接插入排序**: 直接插入排序是一种简单的排序算法,它的工作原理类似于我们手动排序...

    Java直接插入排序算法源码

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

    六种内部排序算法比较:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序、堆排序。

    本话题主要探讨六种内部排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、选择排序以及堆排序。这六种排序算法各有优劣,适用于不同的场景,接下来我们将逐一进行详细阐述。 1. **直接插入排序**: 直接...

    内部排序算法分析

    - **希尔排序**:改进的插入排序,通过增量序列对数据进行预排序,再进行直接插入排序,提高了效率。 - **堆排序**:通过构建堆结构,利用堆的性质进行排序,具有稳定的O(n log n)时间复杂度。 3. **C语言实现**...

    直接插入排序 冒泡排序 快速排序 直接选择排序 堆排序 二路归并排序 C#源代码

    直接插入排序、冒泡排序、快速排序、直接选择排序、堆排序和二路归并排序是计算机科学中经典的排序算法,它们在数据处理和算法学习中占有重要地位。这些排序算法各有特点,适用场景不同,下面将逐一详细介绍,并结合...

    直接插入排序、冒泡排序、快速排序—于—实验七.pdf

    数据排序算法实验报告 本实验报告主要考察直接插入排序、冒泡...本实验报告展示了直接插入排序算法、冒泡排序算法和快速排序算法的实现和比较,展示了实验步骤、实验结果和实验总结,并讨论了实验结果的分析和结论。

    直接插入排序C++代码 VS实现

    直接插入排序是一种简单...总的来说,直接插入排序是一种基础且实用的排序算法,理解其工作原理和实现方式对学习数据结构和算法非常有帮助。在实际编程中,根据不同的应用场景选择合适的排序算法是提高程序效率的关键。

    数据结构各种经典排序算法分析与实现

    《数据结构:经典排序算法分析与实现》 排序算法是计算机科学中不可或缺的一部分,它用于组织和优化数据,提高数据处理效率。本文将深入探讨六种经典的排序算法:选择排序、直接插入排序、冒泡排序、希尔排序、快速...

    插入类排序算法

    在这一大类排序算法中,有三种常见的实现方式:直接插入排序、希尔排序和折半插入排序。 ### 1. 直接插入排序 直接插入排序是最基础的插入类排序,其步骤如下: 1. 将序列中的第一个元素视为已排序部分。 2. 从第...

    插入排序算法的实现.docx

    在本实验中,大学生需要掌握两种插入排序算法的实现:直接插入排序和折半插入排序。 **一、直接插入排序** 直接插入排序的基本思想是将一个记录插入到已经排好序的有序表中,从而得到一个新的、记录数增1的有序表。...

    不同排序算法实现及性能分析(研究生项目作业)

    【排序算法实现与性能分析】 排序算法在计算机科学中占据着至关重要的位置,因为它们直接影响程序执行效率。本文主要探讨了五种常见的排序算法:插入排序、冒泡排序、堆排序、合并排序和快速排序,并进行了性能分析...

    排序算法-直接插入排序

    直接插入排序是一种基础且简单的排序算法,它的工作原理可以形象地比喻为扑克牌的洗牌过程。在实际应用中,虽然对于大规模数据的排序效率不如更高级的算法,如快速排序、归并排序等,但它的实现简单,适合小规模或...

    内排序算法比较,六种排序算法分析

    1) 对以下6种常用的内部排序算法进行比较:起泡排序,直接插入排序,简单选择排序,快速排序,希尔排序,堆排序。 2) 待排序记录的文件个数不小于1000( 其数据用伪随机数产生),至少用5组不同的输入数据作比较;比较...

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

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

    zhijiecharupaixu.rar_插入排序_插入排序算法

    这个压缩包“zhijiecharupaixu.rar”包含的资源是关于直接插入排序算法的实现和相关资料。 直接插入排序的基本思想是:假设数组中有n个元素,已知前i个元素是有序的,现在要把第i+1个元素插入到已排序的序列中,使...

    实现直接插入排序,二分法插入排序、希尔排序,冒泡排序,快速排序,直接选择排序的算法.pdf

    直接插入排序是一种简单的排序算法,它的实现思路是:从第二个元素开始,依次比较当前元素与前一个元素,如果当前元素小于前一个元素,则将其插入到前一个元素之前。该算法的时间复杂度为O(n^2),空间复杂度为O(1)。...

    堆排序、直接插入排序的算法比较

    试通过随机数据比较堆排序、直接插入排序算法的关键字比较次数和关键字移动次数。 (1)待排序表的表长不小于100;其中的数据要用伪随机数产生程序产生;至少要用5组不同的输入数据作比较;比较的指标为有关键字参加...

Global site tag (gtag.js) - Google Analytics