博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排序算法 -- 直接插入排序
阅读量:2429 次
发布时间:2019-05-10

本文共 916 字,大约阅读时间需要 3 分钟。

排序算法的基本概念

  1. 排序的定义

    这里写图片描述

  2. 排序的稳定性

    这里写图片描述

  3. 内排序与外排序

    内排序是整个排序过程中,待排序的所有记录全部放置在内存中。
    外排序是由于排序的记录个数太多,不能同时放置在内存,整个排序过程需要内外存之间多次数据交换才能进行。

直接插入排序

直接插入排序的基本思路是将一个记录插入到已经排好序的有序表中,从而得到一个新的,记录数增1的有序表。其排序过程可以参考下图。

这里写图片描述

实现代码

算法示例程序采用java实现。

public class InsertSort {
/** * 直接插入排序 * @param array */ public static void insertSort(int[] array) { for (int i = 1; i < array.length; ++i) { int record = array[i]; //暂存第i个记录 int j = 0; //找到第i个元素待插入的位置 for (j = i; j > 0 && array[j - 1] > record; --j) { array[j] = array[j - 1]; } //插入元素 array[j] = record; } } public static void main(String[] args) { int[] array = {
10, 50, 7, 56, 23, 89, 1}; insertSort(array); for (int i =0 ; i < array.length; ++i) { System.out.print(array[i] + "\t"); } }}

复杂度分析

直接插入排序在空间上仅需一个记录的辅助空间。

参考资料

大话数据结构

你可能感兴趣的文章
【C语言】c语言程序编译运行过程;静态链接,动态链接;
查看>>
【C语言】数据在计算机中的存储与运算
查看>>
【计算机】什么是计算机中的大端小端
查看>>
【C语言】深入理解const,volatile,static关键字
查看>>
【C语言】c/c++程序的内存是如何分配的?
查看>>
【C语言】深入理解C语言的函数调用过程
查看>>
【C语言】C语言中格式化字符的具体用法(C语言中%的那些事)
查看>>
【java】十大经典排序算法(动图演示)
查看>>
【代码规范】google开源c\c++项目代码规范
查看>>
【C语言】c语言常用的几个函数源代码【strlen,strcpy,strcat,strstr】
查看>>
【C语言】杨辉三角问题
查看>>
【C语言】size与strlen的区别解析
查看>>
【C语言】指针深入理解-指针与数组的关系
查看>>
【C语言】C语言中常用函数源代码【strncpy ,strncat ,strncmp】
查看>>
【linux】入门学习Linux常用必会命令实例详解
查看>>
【java】java高级开发之泛型
查看>>
【java】sting和stringbuilder与stringbuffer的区别辨析
查看>>
【Java】【算法练习】题目描述:输入一个整数数组,判断该数组是不是某二叉搜索树的后续遍历的结果。如果是输出yes,不是输出no,数组任意两个数字不相同。
查看>>
【Java】给定一个二叉树和其中的一个节点,请找出中序遍历的下一个节点且返回, 注意:树中的节点不仅包含左右子节点,同时包含父节点的指针。
查看>>
【Java】内存泄漏与内存溢出 学习总结
查看>>