Insertion_Sort(插入排序)

C语言以递归实现插入排序Insertion Sort算法(附完整源码) 以递归实现插入排序Insertion Sort算法以递归实现插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 以递归实现插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <time.h> /** * @addtogroup sorting Sorting a 阅读详情

      自己编一遍。。。防止遗忘,同时增加熟练度。罗列下来自百科的算法描述和基本步骤

算法描述

  一般来说,插入排序都采用in-place在 数组 上实现。具体算法描述如下:
  ⒈ 从第一个元素开始,该元素可以认为已经被排序
  ⒉ 取出下一个元素,在已经排序的元素序列中从后向前扫描
  ⒊ 如果该元素(已排序)大于新元素,将该元素移到下一位置
  ⒋ 重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
  ⒌ 将新元素插入到下一位置中
  ⒍ 重复步骤2



伪代码

  INSERTION-SORT( A )
  1  for j ← 2  to length[ A ]
  2  do key ←  A [ j ]
  3 Insert  A [ j ] into the sorted sequence  A [1.. j -1].
  4  i ←  j -1
  5  while i >0 and  A  [ i ] > key
  6  do  A  [ i +1] ←  A  [ i ]
  7  i  ←  i -1
  8  A [ i +1] ←  key

/******************************************
**
**      Author: Wan KaiMing
**      Date:   2012-11-01-21.18 星期四
**
*******************************************/

//////////插入排序(从小到大的排序)
//////最好情况:O(n) 最坏情况:O(n^2) 稳定的排序
//////原理:取定一个key,首先保证<该元素之前的为有序>,然后从后往前遍历,key<a[j]则往前继续找
///////     同时a[j]后移,直到找到自己的位置
#include<iostream>
#include<string>
using namespace std;
int main(){
   int a[]={9,8,7,6,5,4,3,2,1};
   int i;
   int key;

   cout<<"未经排序的数组为:";
   for(i=0;i<9;i++) cout<<a[i]<<' ';
   cout<<endl;

   for(i=1;i<9;i++){
       key=a[i]; //这是一个常量
     int  j=i-1; //j在i前一个位置开始
      while(j>=0&&key<a[j]){ //如果k比前面的小并且j>0那么前面的元素一次后移,包括j=0的情况
         a[j+1]=a[j];
         --j;
      }
      a[j+1]=key;
   }



   cout<<endl;

   cout<<"经插入排序的数组为:";
   for(i=0;i<9;i++) cout<<a[i]<<' ';
   cout<<endl;
   return 0;
}



PHP:Insertion Sort插入排序(附完整源码) 阅读详情

相关推荐

C语言插入排序Insertion Sort算法(附完整源码)

插入排序Insertion Sort算法插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) 插入排序Insertion Sort算法的完整源码(定义,实现,main函数测试) #include <assert.h> #include <stdio.h> #include <stdlib.h> #include <time.h> /** * Insertion sort algorithm implements * @par

希望我的博客,能帮上你解决学习中工作中所遇到的问题 795

PTA 09-排序2 Insert or Merge 及 09-排序3 Insertion or Heap Sort 两道题目分析

PTA-mooc完整题目解析及AC代码库:PTA(拼题A)-浙江大学中国大学mooc数据结构2020年春AC代码与题目解析(C语言) 这两道题比较类似,故放在一些进行分析。 09-排序2 Insert or Merge According to Wikipedia: Insertion sort iterates, consuming one input element each repetit...

zhuiyisinian的博客 501

IDEA+JRebel实现SpringBoot+MyBatis Plus项目热部署全攻略(含XML热更新实战)

本文详细介绍了如何在IDEA中使用JRebel为SpringBoot与MyBatis Plus项目配置高效的热部署方案。通过安装激活JRebel插件并配置关键扩展,重点解决了MyBatis XML映射文件修改后无法即时生效的痛点,实现了Java代码与XML文件的秒级热更新,从而彻底摆脱频繁重启应用的开发困境,大幅提升编码与调试效率。

weixin_28831341的博客 472

INSERTION_SORT(插入排序)

如图,左手的牌是排序好的,右手的牌是将要进行排序的。i = j - 1 // i 为要插入的元素的前一个元素位置。while i > -1 and A[i] > key // 前面有序的元素都比key大插在第一个,或者找到。该算法像是在要匹配的元素位置挖一个坑,把前面比它大的元素往后填,最后把key放在正确的坑位。A[2]的插入方式跟上面情况相同,我们直接开始A[3]的排序。总的运行时间为:T(n)=

Hennan_Dianzi_C的博客 888

使用fluent计算流噪声_Fluent能够做的事

刚接触到fluent的同学们,应该会比较好奇,fluent能够做些什么事情,和你的研究有没有关联,能不能达到你的目的?如果不弄明白这样一点,前期可能会做很多无用功。 fluent是计算流体力学的软件,是一个工具。这样一个工具发展至今,可以用来模拟的绝不只有流体力学。下面我们依次来说明。首先是流动,fluent提供了非常丰富的流动模型,不仅可以模拟层流,同样还可以模拟...

weixin_28717647的博客 4857

常用本体建模工具

常用本体建模工具: Apollo、OntoStudio、TopBraid Composer、Semantic Turkey、Knoodl、Chimaera、OliEd、WebODE、Kmgen和DOME Protégé Protégé[1]是一款由斯坦福大学编写并维护的开源本体建模和编辑工具,其支持Web版本和PC版本,使用OWL语言(关于OWL的详细介绍可参看前文2.1节内容)对知识进行表示,读者可以通过Protégé的官方网站访问Web版本或下载桌面版本。Protégé最早开发于1987年,最初目的是

qq_40503347的博客 6162

算法导论-插入排序 insertion sort

插入排序------书中用了排手里的纸牌做例子,如果排序的对象是链表可能会更适合. 但对于数组,我想了个另外的例子更容易理解。   场景: 有8个小朋友坐在8个凳子上排成一排,老师想把小朋友按个头从低到高按顺序坐,老师是懂算法的 总结:从第二个小朋友开始到最后一个小朋友依次叫出来和前面的小朋友比较。 如果前面的小朋友比他高,那个小朋友往右边空位置坐,直到前面的小朋友没有站着的小朋友高,站着的小朋友坐到空凳子上。 Python 代码 https://github.com/zhengyx1982/EngLe

zhengyx1982的博客 472

别再手动拷贝文件了!用Keil MDK的Pack Installer一键搞定STM32上的RT-Thread Nano移植

本文详细介绍了如何使用Keil MDK的Pack Installer一键快速移植RT-Thread Nano到STM32项目,告别繁琐的手动拷贝和配置过程。通过自动化版本管理和依赖处理,移植时间从47分钟缩短至3分钟,大幅提升开发效率。文章还提供了实战步骤、高级配置技巧和常见问题解决方案,帮助开发者轻松实现RTOS集成。

weixin_29194817的博客 363

C++ insertion sort(插入排序)

插入排序也是一种简单的排序算法。 对于一些large

a130737的专栏 1896

13、多实例任务(multi instance)

多实例任务,是指一个类型的任务需要循环执行多次,包括串行多实例任务和并行多实例任务。

leyoliu的博客 3202

【JAVA】海康威视门禁机ISAPI接口开发,人脸上传更新接口

本文实现了一个HTTP工具类HTTPClientUtil,提供GET/POST/PUT/DELETE请求方法,支持摘要认证。工具类封装了Apache HttpClient,设置连接超时、最大连接数等参数,通过DeviceInfoDTO传递设备IP、端口和认证信息。文中还展示了两个应用示例:userInfoAdd()用于添加人员信息,FaceDataRecordAdd()用于添加人脸数据,均通过POST请求与设备ISAPI接口交互。该工具类简化了HTTP请求处理,支持设备管理系统的集成开发。

qq_27246521的博客 587

Sort排序专题(7)归并排序(MergeSort)(C++实现)

归并排序(MergeSort) 归并排序(Merge Sort):是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。 思想:将数组分解直到每个分组只有一个元素,在进行两两归并,得到有序序列,在将有序序列进行两两归并然后直到最终的合并得到有序序列。 图解如下: ①先将总序列一分为二,再将各个子序列一分为二,直到每个分组只有一个元素10,4,6,

Your_boy_的博客 504

cesium 综合教程200+【目录】(已包含186篇文章)

cesium示例教程100+旨在为开发者提供简单快捷的,。在每一个示例中,解释相应的API知识点,做到。目录中有链接的为已有文章,没链接的为目标文章,不断更新中…

大剑师兰特的GIS世界 8892

排序---插入排序(Insertion Sort)

插入排序是一种直观的排序算法,通过逐步构建有序序列实现排序。其核心思想是将数组分为已排序和未排序两部分,每次从未排序部分取出一个元素插入到已排序部分的正确位置。算法时间复杂度为O(n²),空间复杂度为O(1),具有稳定性,适合小规模或接近有序的数据。优化版二分插入排序通过二分查找减少比较次数,但移动次数不变。插入排序简单高效,常用于小规模数据排序或作为复杂算法的子过程。

MzKyle的博客 2107

【CC精品教程】iTwin capture倾斜摄影建模完整操作流程

【CC精品教程】iTwin capture倾斜摄影建模完整操作流程。包括:无人机航测外业作业流程(像控点布设、航线规划、仿地飞行、航拍)和内业数据处理软件(Pix4d、CC、EPS、PhotoScan、Globalmapper)像控点权重调配、空三加密、DOM、DSM、DEM,DLG生成、等高线生成、高程点提取,点云分类过滤分割、点云生成DEM、三维模型生成等。

智慧空间实验室 3957

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

图解插入排序(Insertion Sort)

插入排序(Insertion Sort) 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法描述 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元素序列中从后向...

天行健,君子以自强不息 899

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

排序——插入排序(Insertion sort)

算法思想 顾名思义,采用插入的方式,对无序数列进行排序。 维护一个有序区,将数据一个一个插入到有序区的适当位置,直到整个数组都有序。即每步将一个待排序的记录,按其关键码值的大小插入前面已经排序的文件中适当位置上,直到全部插入完为止。 图示过程 初始状态 数列的初始值为。 先吧首元素 5 作为有序区,此时有序区只有一个元素,如下图所示。 第一轮 将下一个元素 8 和有序区所有元素...

努力中的老周的专栏 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

插入排序(Insertion Sort)

插入排序(Insertion Sort) 插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 3.1 算法描述 一般来说,插入排序都采用in-place在数组上实现。具体算法描述如下: 从第一个元素开始,该元素可以认为已经被排序; 取出下一个元素,在已经排序的元...

jenie的专栏 194

插入排序Insertion Sort

插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 包括:直接插入排序,二分插入排序(又称折半插...

aian53516的博客 116

插入排序 insertion sort

一. 原理 现在想象一下手里有五张牌: 现在对这几张进行排序,最后在手里我们希望得到顺序是从小到大increasing这样的五张牌: 插入排序的过程: 现在一个一个的将这些红桃牌提取出来比较再将他们插入正确的位置。 首先将红桃2提取出来当作一个子序列,现在这个子序列已经是排好序的了,因为它只包含红桃2一个元素。原来的序列已经被分成了两部分,一部分是已经排好序的(红桃2),另一部分是没有进行...

Ying_ying_123的博客 343

Golang学习 - 插入排序(Insertion Sort)

插入排序是一种简单直观的排序算法,通过将数组分为已排序和未排序两部分,逐个将未排序元素插入到已排序部分的正确位置。其时间复杂度为O(n²),但针对近乎有序数据和小规模数据时效率较高。Go语言实现展示了基础版本和二分查找优化版本,后者通过二分查找减少比较次数。该算法是稳定的原地排序,适用于小规模数据和在线排序场景,常被用作混合排序算法的基础组件。练习部分包含了升序、降序、字符串排序及稳定性验证的实现。

csdnUser12的博客 427

插入排序——Insertion Sort

插入排序:将数组中的数据分为两个区间,已排序区间和未排序区间。初始已排序区间只有一个元素,就是数组的第一个元素。插入算法的核心思想是取未排序区间中的元素,在已排序中找到合适的插入位置将其插入,并保证已排序空间数据一直有序。重复这个过程,直到未排序区间中元素为空。 插入排序是原地、稳定的排序算法。 原地:运行并不需要额外的存储空间,空间复杂度为O(1)。 稳定:对于值相同的元素,选择将后面出现...

DieJugend的博客 262

插入排序Insertion sort

有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元

ktaurus的专栏 415

插入排序 Insertion-Sort

插入排序相关代码 相关代码 class Sort3{ /** 插入排序 Insertion-Sort * 它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。 * 从第一个元素开始,该元素可以认为已经被排序; * 取出下一个元素,在已经排序的元素序列中从后向前扫描; * 如果该元素(已排序)大于新元素,将该...

小白之歌 207
上一篇: ZOJ_1240_IBM Minus One
下一篇: ZOJ_1241_Geometry Made Simple
wankaiming
博客等级 码龄15年 49粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值