这是春节过后写的第一篇博文,大家都有一样的感觉,春节过后,人都有点不想动了,说实话,我也

不想写的!没有办法。借着晚上的酒劲,就写了这篇直接排序(Insert Sort)的博文。

现在转移战场了,现在开始进军排序这块算法之地了。而本节将重点讲解直接插入排序。现在大家就

听本人娓娓道来!有钱的捧个钱场,没钱的捧个人场!

众所周知!排序,在以后的编程生涯中的地位是多么的重要的,地位的重要性,鄙人就不在此浪费口

舌了。重点还是放在算法的思想精髓上来。

在前面的博文中,我也讲了一般的数据结构有数组、链表、树和图!而直接插入排序可以用数组和链

表都可以实现。而链表实现在我的以前博文中有讲,但是题目不是《算法不会,上能饭否》这个系列的,

但是在数据结构这个目录下可以找到。所以,我这里主要还是讲用数组实现直接插入排序(Insert Sort)!

算法思想:当插入第i(i>= 1)个对象时,前面的v[0], v[1], v[2],……v[i - 1]都已经排列好了,而你现在需

要做的就是,将v[i]的值与v[i - 1], v[I - 2]……的值顺序进行比较,找到插入位置就将v[i]插入,原来位置上的

对象向后顺序移动。

算法思想总的讲起来很是简单。区区几行字,没有什么大不了的,没有什么递归,回溯等等需要你去

动脑经的,就是一个找到一个合适的位置,讲数组中的在合适位置之后的之向后顺序移动(前提是你会这

么做,很熟悉懂得数组元素的插入,再这里就不用了解删除了,如果你还稍微欠了点火候,再我的这个目

录下有一篇博文,是关于顺序表的,主要讲的就是数组的一些基本操作,不妨去看看!),然后就是想当

然的插入了。So easy!

再这个过程中的如何一步步的走这个算法,我就不画图了,画图却是很费时间的。现在还是主要看代

码!

注:本程序在visual studio 2008下编译通过,如果编译不能通过,请选择visual studio 2008.

再注:上一个注非广告,请大家见谅!同时,本人的博客关于C++的博文中涉及的代码都在visual studio

2008中经本人亲自测试通过,如有问题,请留言提出。谢谢!

再注:如转载本博文,请注明出处,谢谢合作!因为写博文也是一件不容易的事情,请尊重我的劳动成

果!

代码如下:

#include <iostream> #include <stdlib.h> using namespace std; void InsertSort(); //插入排序函数 int main() { InsertSort(); } void InsertSort() { int num; //排序的数的个数 cout<<"请输入排序个数:"; cin>>num; //判断输入错误,退出程序 if (num <= 0) { cout<<"输入错误!"<<endl; exit(0); } int *Array = new int[num]; //动态开辟存放参加排序的数的数组 for (int i = 0; i < num; i++) { cin>>Array[i]; if (i == 0) { continue; //第一个数,直接放入数组,不用排序 } //进行排序循环 for (int j = 0; j < i; j++) { if (Array[i] > Array[j]) { continue; } else { int temp = Array[i]; //记录Array[i],防止被覆盖 //向后移动,将小的插入,数组的移动操作 for (int m = i; m >= j; m--) { Array[m] = Array[m - 1]; } Array[j] = temp; } } } //输出排序结果 cout<<"排序结果输出:"; for (int n = 0; n < num; n++) { cout<<Array[n]<<","; } cout<<"/n"; delete[] Array; //删除动态数组开辟的空间 }

好了,博文写到此出为止!如有问题,或者对这个程序还是觉得有什么不满意,请留言提出!你我共同进

步!谢谢!

转载于:https://www.cnblogs.com/JPAORM/archive/2011/03/20/2509900.html

算法不会,尚能饭否之排序——直接插入排序(Insert sort)相关推荐

  1. 基础排序算法(冒泡排序,选择排序,插入排序)

    最近经常调用api中的排序算法,很少自己写了,有时候也只写写快速排序这些比较快的排序,然而刚开始学排序时用的一些基本的排序算法却有点忘了 正好今天Java老师让我们每个人写个选择排序热热手,趁这个机会 ...

  2. Python排序算法(一)冒泡排序、选择排序、插入排序

    今天总结一下Python中的排序算法.这篇文章有的排序算法是:冒泡排序.选择排序.插入排序. 冒泡排序 先看一下代码. ''' 冒泡排序 '''def bubble_sort(aList):n = l ...

  3. 十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    冒泡排序.选择排序.插入排序.希尔排序.归并排序.快速排序.堆排序.计数排序.桶排序.基数排序的动图与源代码. 目录 关于时间复杂度 冒泡排序 选择排序 插入排序 希尔排序 归并排序 快速排序 堆排序 ...

  4. 排序算法(冒泡排序、选择排序、插入排序、希尔排序、快速排序、归并排序、基数排序)

    排序也叫排序算法,排序是将一组数据,依指定的顺序进行排列的过程. 排序的分类: 1)内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序. 2)外部排序:数据量过大,无法全部加载到内存中,需要 ...

  5. 算法不会,尚能饭否之排序——折半插入排序(Binary Insert Sort)

    还是排序,上一篇讲的是排序大家庭中的直接插入排序,今天呢,主要讲的是折半插入排 序.实现起来,还是蛮简单的,没有太多的拐弯抹角的,不会伤害很多脑细胞的.人家都 说了,编程,如何提高自己的编程技术呢?那 ...

  6. python遍历数组冒泡排序_经典排序算法(冒泡排序,选择排序,插入排序,快速排序,堆排序)python实现...

    最近在复习经典排序算法,自己用python也实现了一下,这里不会涉及到原理(因为网上方法已经很详细啦),就把函数贴上来,可以让大家自己试着运行下,再结合别处的原理也可以更好地理解它们的实现. 如果有错 ...

  7. java冒泡排序_JAVA实现经典排序算法(冒泡排序、选择排序、插入排序、希尔排序、堆排序、归并排序、快速排序)...

    冒泡排序 依次比较相邻的元素,若发现逆顺序,则交换.小的向前换,大的向后换,本次循环完毕之后再次从头开始扫描,直到某次扫描中没有元素交换,说明每个元素都不比它后面的元素大,至此排序完成. import ...

  8. 【完整可运行源码+GIF动画演示】十大经典排序算法系列——冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序

    以前也零零碎碎发过一些排序算法,但总是不系统, 这次彻底的对排序系列做了一个整体的规划, 小伙伴们快快mark哦~ [GIF动画+完整可运行源代码]C++实现 冒泡排序--十大经典排序算法之一 [GI ...

  9. C语言实例——四种排序算法(冒泡排序、选择排序、插入排序、快速排序)

    C 语言排序算法 BB Time 一.冒泡排序 1.原理 2.代码 二.选择排序 1.原理 2.代码 三.插入排序 1.原理 2.代码 四.快速排序 1.原理 2.代码 3.操作过程 BB Again ...

最新文章

  1. 三菱触摸屏usb驱动安装_2020年三菱EXPRESS SWB和LWB:竟然是日系中唯一没有屏幕的面包车...
  2. SQL SERVER 基础知识及语法总结,从头说起,一点一滴 (一)
  3. css 动画使用_如何在CSS中使用动画
  4. shell脚本参数中有空格
  5. WAMP PHP开发环境
  6. 快捷配置Hibernate实现对数据库的配置(构建通道)
  7. c#winform演练 ktv项目 制作歌曲播放列表
  8. LeetCode 30. Substring with Concatenation of All Words
  9. Java学习-Java系统介绍
  10. 外贸建站需要注意的事项
  11. html如何实现雪花飘落,如何使用HTML5 canvas实现雪花飘落
  12. github项目(重点)
  13. Android Studio将html5网址封装成APP
  14. 【虚幻引擎】UE4/UE5科大讯飞文字合成语音
  15. 关于double和float类型的转换
  16. 【转】iOS开发人员必看的精品资料(100个)
  17. openstack glance-api-paster
  18. linux无线usb网卡,Linux下USB无线网卡WL-167G驱动安装过程
  19. C语言:浮点型的基本知识
  20. android系统文件误删,误删手机系统文件怎么恢复

热门文章

  1. WWDC心愿单:新版OS X或将有这些变化
  2. UnsupportedClassVersionError 错误解决办法
  3. 在被打击后的心里变化
  4. SuperMap.IS.AjaxScript之常用功能实现研究及使用
  5. GET XXX net::ERR_CONNECTION_REFUSED
  6. 小程序入门学习07--动态设置标题、转发
  7. alwayson故障转移群集服务器 修改虚拟主机名及IP地址
  8. linux shell脚本date命令 按照不同格式输出
  9. 千字搞定数据产品选型!报表、BI、大数据平台、中台都在这了
  10. 新零售不简单,当初马云自己都没解释清楚!