看书、思考、写代码!

/***********************************************
* copyright@hustyangju
* blog: http://blog.csdn.net/hustyangju
* 2014-11-03
* 题目: 插入排序
* 描写叙述: 给定一个数组,依照逐个插入比較的方法得到一个已序数组
* 解题思路:从第一个元素開始,在已序数组上插入下一个元素,能够从已序数组的尾部。也能够从头部逐个比較插入
* 时间复杂度:原数组顺序排好的情况下,时间复杂度最好,为O(n)。原数组逆序排好时,时间复杂度最坏。为O(n^2),平均时间复杂度为O(n^2)
* 空间复杂度:仅仅用到一个暂时变量。在原数组上排序,空间复杂度为O(1)
************************************************/
#include <iostream> using namespace std;
template<class type>
class insert_sort
{
public:
insert_sort(type *p,int num):_p(p),_num(num){}
~insert_sort();
void sort();
void print();
private:
type *_p;
int _num;
};
template<class type>
insert_sort<type>::~insert_sort()
{ }
template<class type>
void insert_sort<type>::sort()
{
for(int i=1;i<_num;i++)
{
int j=i-1;
type key=_p[i];
while((j>=0)&&(_p[j]>key))
{
_p[j+1]=_p[j];
j-=1;
}
_p[j+1]=key;
}
} template<class type>
void insert_sort<type>::print()
{
for(int i=0;i<_num;i++)
{
cout<<*_p<<" ";
_p++;
}
cout<<endl;
} int main()
{
float array[5]={5.1,3,6.8,9.1,10};
int array1[10]={22,8,9,42,2,78,9,33,11,10};
insert_sort<float> mysort(array,5);
mysort.sort();
mysort.print();
insert_sort<int> mysort1(array1,10);
mysort1.sort();
mysort1.print();
//system("PAUSE");
}

《github一天一道算法题》:插入排序的更多相关文章

  1. 《github一天一道算法题》:分治法求数组最大连续子序列和

    看书.思考.写代码. /*************************************** * copyright@hustyangju * blog: http://blog.csdn. ...

  2. 《github一天一道算法题》:并归排序

    看书.思考.写代码! /******************************************* * copyright@hustyangju * blog: http://blog.c ...

  3. 每天一道算法题(4)——O(1)时间内删除链表节点

    1.思路 假设链表......---A--B--C--D....,要删除B.一般的做法是遍历链表并记录前驱节点,修改指针,时间为O(n).删除节点的实质为更改后驱指针指向.这里,复制C的内容至B(此时 ...

  4. 从一道算法题实现一个文本diff小工具

    众所周知,很多社区都是有内容审核机制的,除了第一次发布,后续的修改也需要审核,最粗暴的方式当然是从头再看一遍,但是编辑肯定想弄死你,显然这样效率比较低,比如就改了一个错别字,再看几遍可能也看不出来,所 ...

  5. 【每天一道算法题】时间复杂度为O(n)的排序

    有1,2,……一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度为O(1),使用交换,而且一次只能交换两个数. 这个是以前看到的算法题,题目不难.但是要求比较多,排序算法中,时间 ...

  6. 提前批笔试一道算法题的Java实现

    题目描述 这是2021广联达校招提前批笔试算法题之一. 我们希望一个序列中的元素是各不相同的,但是理想和显示往往是有差距的.现在给出一个序列A,其中难免有相同的元素,现在提供了一种变化方式,使得经过若 ...

  7. 每天一道算法题-leetcode136-只出现一次的数字

    前言 打卡第一天 2019.10.26日打卡 算法,即解决问题的方法.同一个问题,使用不同的算法,虽然得到的结果相同,但是耗费的时间和资源是不同的.这就需要我们学习算法,找出哪个算法更好. 大家都知道 ...

  8. 一道算法题加深我对C++中map函数的理解

    一.一道题目引发我对map函数的考量 首先是题目大意:有n个银行,a[i]表示这个人在第i个银行有a[i]块钱(可以是负数),所有银行的钱加起来正好是0.每次只能在相邻的银行之间转账,问最少要转多少次 ...

  9. 【每天一道算法题】Numeric Keypad

    题目描述 The numberic keypad on your mobile phone looks like below: 123 456 789  0  suppose you are hold ...

随机推荐

  1. Rule Or WorkFlow

    The main value of a Workflow engine is that it makes it possible to customize the flows through some ...

  2. 在Servlet中使用JSON

    在Servlet中使用JSON,和上篇的使用相同,只不过多了配置web.xml的内容 servlet代码如下: import java.io.IOException; import java.io.P ...

  3. HTML5 Audio时代的MIDI音乐文件播放

    大家都知道,HTML5 Audio标签能够支持wav, webm, mp3, ogg, acc等格式,但是有个很重要的音乐文件格式midi(扩展名mid)却在各大浏览器中都没有内置的支持,因为mid文 ...

  4. Hibernate缓存、组件、继承映射

    Hibernate缓存.组件.继承映射 三种状态: 临时状态:不受session管理,没有提交到数据库:没有执行sql之前,new对象的时候: 持久化状态:受session管理,提交到数据库:正在执行 ...

  5. R-plot

    颜色.图例和线 在散点图中添加信息.图例以及回归线. 模拟数据 #模拟数据 dat <- data.frame(X = runif(100,-2,2),T1 = gl(n=4,k=25,labe ...

  6. string.Format组合跳转路径

    string url = this.ResolveClientUrl("~/page/bn_stu.aspx"); string str = string.Format(" ...

  7. C#通用权限管理-程序安全检查,这些你一定要考虑到位

    接触通用权限已经一年,现在使用已经很熟练,分享通用权限管理下面的一些好的开发思想. 安全漏洞对于一个小项目来说,可能不是特别的重视,对于一个大项目来说,这是特别重要需要注意的,特别是在项目开发中的就要 ...

  8. 贪吃蛇 WPF

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  9. javascript模式——Command

    假设我们要做一个计算器程序 var calculator = { add: function( x, y ){ return x + y; }, sub: function( x, y ){ retu ...

  10. Equal 和==比较

    Equal 和==比较 ==操作符专门用来比较两个变量的值是否相等,也就是用于比较变量所对应的内存中所存储的数值是否相同,要比较两个基本类型的数据或两个引用变量是否相当,只能用==操作符. 如果一个变 ...