直接插入排序(Straight Insertion Sort)
将一个数组,按当前元素的大小,插入到前面已经排好序的数据中的适当位置中,
依次直到全入插入完全.
下面是一个数组在经过插入排序时的变化情况(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)相关推荐
- php代码编写直接插入排序算法,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析...
本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...
- 插入排序 php,PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
本文实例讲述了PHP排序算法之直接插入排序(Straight Insertion Sort).分享给大家供大家参考,具体如下: 算法引入: 在这里我们依然使用<大话数据结构>里面的一个例子 ...
- C语言实现折半插入排序(Binary Insertion Sort)算法(附完整源码)
折半插入排序Binary Insertion Sort 折半插入排序(Binary Insertion Sort)算法的完整源码(定义,实现,main函数测试) 折半插入排序(Binary Inser ...
- [php]数据结构算法(PHP描述) 半折插入排序 straight binary sort
1 <?php 2 /** 3 * 半折插入排序 straight binary sort 4 * 5 * 原理:当直接插入排序进行到某一趟时,对于 r[i] 来讲,前边 i-1 个记录已经按关 ...
- Java排序算法——插入排序(Insertion Sort)
之前总结了交换排序的冒泡排序与选择排序的简单选择排序,这次我们来看看插入排序的简单插入排序~ 往期传送门: 冒泡排序: Java排序算法--冒泡排序(Bubble Sort)https://blog. ...
- js插值法的使用_js 实现排序算法 -- 插入排序(Insertion Sort)
原文: 插入排序 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入. 算法描述 ...
- 算法:冒泡排序(Bubble Sort)、插入排序(Insertion Sort)和选择排序(Selection Sort)总结...
背景 这两天温习了 5 中排序算法,之前也都看过它们的实现,因为没有深入分析的缘故,一直记不住谁是谁,本文就记录一下我学习的一些心得. 三种排序算法可以总结为如下: 都将数组分为已排序部分和未排序部分 ...
- 数据结构:插入排序(Insertion sort)
package com.sortbasic;import java.util.Random;public class InsertionSort {// 数组private static int[] ...
- Python 数据结构与算法——插入排序(insertion sort)
我们先归纳性地假设前 n−1n-1 个元素已经完成排序,现在要将第 n<script id="MathJax-Element-2" type="math/tex&q ...
最新文章
- iOS App Launch Option
- XML解析---JAVAEE学习之路
- php post 获取xml,php 获取post的xml数据并解析示例
- php代码审计步骤,php代码审计(一)-----调试函数
- 以太坊智能合约 编译脚本
- ygbook和ptcms哪个好_长期更新,国内所有小说建站系统整理
- 怎么step into MFC Source code
- 资料分析-特殊增长率,综合分析
- K3 WISE修改单据表头字段默认值
- 史上最简单的SpringCloud教程 | 第六篇: 分布式配置中心(Spring Cloud Config)(Finchley版本)
- 如何填报高考志愿2020流程图解和最全指南
- sourceTree无法注册解决
- vue实现1-4-9宫格切换
- python做事件研究法_35行代码搞定事件研究法(上)
- 多多情报通:拼多多卖茶叶需要食品许可证吗?还需要什么证件?
- windows桌面上自由添加自定义文字软件--BgInfo
- android paint跑马灯,Android使用Canvas实现跑马灯
- hdu 4389 X mod f(x) (数位dp||打表)
- 杰理之在anc模式下手机断开蓝牙耳机会有噗噗声问题【篇】
- 微雪的STM32F407开发板+友善之背的wifi模块SDWIFI-YS09测试