`
SCYForce
  • 浏览: 40819 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

算法笔记(第一部分)-- 排序之白话插入排序

阅读更多
插入排序也是一种比较简单的排序方法,它的基本原理就好似我们打牌过程中摸牌理牌那一环:当你摸到一张牌后将其插入到合适的位置。

插入排序首先定位一个数(一般从第二个开始),将这个数依次与位于它之前的数进行比较,经过一轮比较,找到它在这些数中适当的位置。然后定位下一个数,再找到合适的位置,依次进行直到最后一个数。

例如(5 2 1 4 3),黑体为进行交换的两数。
第一轮:
2 5 1 4 3)
第二轮:
(2 1 5 4 3)
       (1 2 5 4 3)
第三轮:
(1 2 4 5 3)
       (1 2 4 5 3)
       (1 2 4 5 3)
第四轮:
(1 2 4 3 5
       (1 2 3 4 5)
       (1 2 3 4 5)
       (1 2 3 4 5)排序完成

插入排序在数据集较大的时候效率会变的很低,但是它易于实现,处理小型数据集时效率较高,同时也是稳定的,in-place(目前不知道怎么翻译)的,它的时间复杂度是О(n²),空间复杂度是О(n)。

插入排序的动画:


插入排序的代码(递增):
public void insertion_sort(int[] data){
        int key = 0;
        int j = 0;
        for(int i=1; i<data.length; i++){
              key = data[i];
              j = i-1;
              while(j>=0 && data[j]>key){
            	    swap(data,j,j+1);
                    j=j-1;
              }
        }
}
分享到:
评论
2 楼 lenky0401 2008-09-07  
in-place: This means that the algorithms do not allocate additional storage to hold temporary results: they sort the data in place. 
1 楼 lenky0401 2008-09-07  
in-place 原地或就地 意思是不需要额外的输出数据保存空间 输出直接覆盖占用输入

相关推荐

    MoreWindows白话经典算法之七大排序

    冒泡排序、插入排序、选择排序、希尔排序、归并排序、快速排序和堆排序是七大基础的计算机算法,它们各自有着不同的特点和适用场景。 一、冒泡排序(Bubble Sort) 冒泡排序是一种简单的排序算法。它重复地遍历要...

    MoreWindows白话经典算法之七大排序第2版(高清)

    本书《更多Windows白话经典算法之七大排序第2版》是一部深入浅出讲解七种经典排序算法的著作,旨在帮助读者理解并掌握冒泡排序、直接插入排序、直接选择排序、希尔排序、归并排序、快速排序以及堆排序等基本概念和...

    MoreWindows白话经典算法之七大排序(高清版)

    ### 白话经典算法之七大排序 #### 一、冒泡排序 冒泡排序是一种简单直观的排序算法,它的基本思想是从第一个元素开始,比较相邻元素的大小,如果前一个元素大于后一个元素则交换它们的位置,这样一轮比较下来,...

    白话经典算法之七大排序

    冒泡排序是最简单的排序算法之一,它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的...

    白话经典算法之七大排序(高清版)

    《白话经典算法之七大排序》是一本专为初学者设计的算法教程,旨在通过简单易懂的语言,帮助读者深入浅出地理解并掌握七大排序算法。这些排序算法是计算机科学与信息技术领域的基础,对于提升编程能力和解决实际问题...

    白话经典算法系列之六 快速排序 快速搞定 - MoreWindows - 博客园1

    快速排序是一种高效的排序算法,由C.R.A.Hoare在1962年提出。它基于分治策略,但其完整流程可以更准确地描述为“挖坑填数+分治法”。快速排序的核心思想是通过选取一个基准数,将数组分为两部分:一部分的所有元素都...

    经典算法之七大排序白话讲解第二版

    1. **初始化**:假设数组长度为N,首先设定第一个未排序的元素为最小值。 2. **查找最小值**:从第二个元素开始遍历整个数组,找出最小的元素。 3. **交换位置**:将找到的最小元素与当前位置的第一个未排序元素交换...

    排序算法经典讲解

    本资源"MoreWindows白话经典算法之七大排序(高清版).pdf"提供了一套详尽的排序算法讲解,涵盖了七大经典的排序算法。以下是这些排序算法的详细介绍: 1. 冒泡排序(Bubble Sort): 冒泡排序是一种简单的交换排序,...

    [网盘]MoreWindows白话经典算法之七大排序第2版(高清)

    在第一版的基础上新加了对冒泡排序,直接插入排序,直接选择排序,希尔排序,归并排序,快速排序和堆排序这七种常用的排序方法的总结篇,方便大家复习,合适作为笔试面试前的复习资料。

    More Windows白话经典数据结构算法之七大排序最新整理版

    冒泡排序是最基础也是最容易理解的排序算法之一。它的基本思路是通过不断地比较相邻两个元素,并根据比较结果进行交换来实现排序。整个过程如同气泡逐渐上升一样,较大的元素会逐步地移动到序列的末尾。 **冒泡排序...

    白话经典算法

    本文将详细解析七种经典的排序算法:冒泡排序、直接插入排序、直接选择排序、希尔排序、归并排序、快速排序以及堆排序。这些算法对于程序员来说至关重要,无论是在日常开发还是在面试中,都是常被问及的知识点。 1....

    白话的排序总结

    1. 初始化:假设数组的第一个元素已经是排序好的。 2. 遍历:从未排序的部分取一个元素,与已排序的部分进行比较,找到正确的位置插入。 3. 重复:继续从未排序的部分取出下一个元素,重复以上过程,直到所有元素都...

    白话算法(理论联系实际)-初探遗传算法接近完美

    1. **种群**:遗传算法的起点是一个包含多个解(个体)的集合,每个个体都有一个与之相关的适应度值,这通常反映了该解的质量或性能。 2. **基因编码**:个体的基因编码是问题解决方案的表示方式,可以是二进制串、...

    基于python 3 编程实现常用的排序算法,包括:冒泡排序、直接插入排序、直接选择排序、希尔排序、归并排序、快速排序、堆排序

    基于python 3 编程实现常用的排序算法,包括:冒泡排序、直接插入排序、直接选择排序、希尔排序、归并排序、快速排序、堆排序.zip 基于python 3 编程实现常用的排序算法,包括:冒泡排序、直接插入排序、直接选择...

    最短路径算法—Bellman-Ford(贝尔曼-福特)算法分析与实现(CC++)

    最短路径算法—Bellman-Ford(贝尔曼-福特)算法分析与实现(CC++),希望对你能有所帮助!

    基于javascript实现插入排序,希尔排序,简单选择排序,冒泡排序,快速排序

    希尔排序 基于javascript实现插入排序,希尔排序,简单选择排序,冒泡排序,快速排序 基于javascript实现插入排序,希尔排序,简单选择排序,冒泡排序,快速排序

Global site tag (gtag.js) - Google Analytics