将一个数组,按当前元素的大小,插入到前面已经排好序的数据中的适当位置中,
依次直到全入插入完全.
下面是一个数组在经过插入排序时的变化情况(t表次数times)

Init---{7, 4, 3, 2, 5, 6, 1}  初始
t=1----{4, 7, 3, 2, 5, 6, 1}  将第1个元素按其大小插到前面排好序的数列的相应位置
t=2----{3, 4, 7, 2, 5, 6, 1}  将第2个元素按其大小插到前面排好序的数列的相应位置
t=3----{2, 3, 4, 7, 5, 6, 1}  ...
t=4----{2, 3, 4, 5, 7, 6, 1}  ...
t=5----{2, 3, 4, 5, 6, 7, 1}  ...
t=6----{1, 2, 3, 4, 5, 6, 7}  将第t个元素按其大小插到前面排好序的数列的相应位置

C++实现如下:

 #include<iostream>using namespace std;void StraightInsertionSort(int arr[], int n){int tmp  = 0,prev = 0; // Previous Elementfor(int t=1; t<n; t++) // t for times{tmp = arr[t]; // 取出当前元素prev = t - 1; // 前一个元素// 当前元素小于前一个且没越界,执行替换while( (prev >= 0) && (tmp < arr[prev]) ){arr[prev + 1] = arr[prev]; // 把前一个元素赋值给当前prev--; // 再向前移动一个位置}arr[prev+1] = tmp;}}// 在主函数中测试下...void main(){int arr1[] = {7, 4, 3, 2, 5, 6, 1};StraightInsertionSort(arr1, 7);for(int i=0; i<7; i++)cout<< arr1[i] << " ";cout<<endl;}

在网上有段很不错的插入排序舞蹈,可以看看:

转载于:https://www.cnblogs.com/rookie2/archive/2012/08/23/2653466.html

直接插入排序(Straight Insertion Sort)相关推荐

  1. php代码编写直接插入排序算法,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析...

    本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...

  2. 插入排序 php,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析

    本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...

  3. C语言实现折半插入排序(Binary Insertion Sort)算法(附完整源码)

    折半插入排序Binary Insertion Sort 折半插入排序(Binary Insertion Sort)算法的完整源码(定义,实现,main函数测试) 折半插入排序(Binary Inser ...

  4. [php]数据结构算法(PHP描述) 半折插入排序 straight binary sort

    1 <?php 2 /** 3 * 半折插入排序 straight binary sort 4 * 5 * 原理:当直接插入排序进行到某一趟时,对于 r[i] 来讲,前边 i-1 个记录已经按关 ...

  5. Java排序算法——插入排序(Insertion Sort)

    之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法--冒泡排序(Bubble Sort)https://blog. ...

  6. js插值法的使用_js 实现排序算法 -- 插入排序(Insertion Sort)

    原文: 插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法描述 ...

  7. 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结...

    背景 这两天温习了 5 中排序算法,之前也都看过它们的实现,因为没有深入分析的缘故,一直记不住谁是谁,本文就记录一下我学习的一些心得. 三种排序算法可以总结为如下: 都将数组分为已排序部分和未排序部分 ...

  8. 数据结构:插入排序(Insertion sort)

    package com.sortbasic;import java.util.Random;public class InsertionSort {// 数组private static int[] ...

  9. Python 数据结构与算法——插入排序(insertion sort)

    我们先归纳性地假设前 n−1n-1 个元素已经完成排序,现在要将第 n<script id="MathJax-Element-2" type="math/tex&q ...

最新文章

  1. iOS App Launch Option
  2. XML解析---JAVAEE学习之路
  3. php post 获取xml,php 获取post的xml数据并解析示例
  4. php代码审计步骤,php代码审计(一)-----调试函数
  5. 以太坊智能合约 编译脚本
  6. ygbook和ptcms哪个好_长期更新,国内所有小说建站系统整理
  7. 怎么step into MFC Source code
  8. 资料分析-特殊增长率,综合分析
  9. K3 WISE修改单据表头字段默认值
  10. 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
  11. 如何填报高考志愿2020流程图解和最全指南
  12. sourceTree无法注册解决
  13. vue实现1-4-9宫格切换
  14. python做事件研究法_35行代码搞定事件研究法(上)
  15. 多多情报通:拼多多卖茶叶需要食品许可证吗?还需要什么证件?
  16. windows桌面上自由添加自定义文字软件--BgInfo
  17. android paint跑马灯,Android使用Canvas实现跑马灯
  18. hdu 4389 X mod f(x) (数位dp||打表)
  19. 杰理之在anc模式下手机断开蓝牙耳机会有噗噗声问题【篇】
  20. 微雪的STM32F407开发板+友善之背的wifi模块SDWIFI-YS09测试

热门文章

  1. [pytorch、学习] - 5.3 多输入通道和多输出通道
  2. javascript --- 变量提升的理解
  3. 【C++STL/红黑树】POJ 3481 DoubleQueue
  4. android自定义布局实现优惠券效果
  5. Oracle 变量绑定与变量窥视合集系列一
  6. 配置vim在源代码中自动添加作者信息
  7. 开始Go开发之旅-Golang架构师之路系列实战
  8. Android从无知到有知——NO.7
  9. phpcms_v9推送到其他栏目后再在其他栏目删除导致数据库出错
  10. Javascript-7对象:字符串、时间