看书、思考、写代码!

/***********************************************
* 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. Java GC 日志详解(转)

    Java GC日志可以通过 +PrintGCDetails开启 以ParallelGC为例 YoungGC日志解释如下(图片源地址:这里) : FullGC(图片源地址:这里): http://blo ...

  2. [置顶] 深入浅出Spring(三) AOP详解

    上次的博文深入浅出Spring(二) IoC详解中,我为大家简单介绍了一下Spring框架核心内容中的IoC,接下来我们继续讲解另一个核心AOP(Aspect Oriented Programming ...

  3. UVA 1153 KEEP THE CUSTOMER SATISFIED

    题意: 钢铁公司有N个客户的订单,每个订单有一个产量q(生产时间刚好也等于q)和订单完成截止时间.公司要求完成尽量多的订单. 分析: 先按截止时间d排序,然后维护一个已经选好的订单的优先队列,如果当前 ...

  4. Oracle事物基础

    事务 1 事务定义 数据库事务是SQL语句的组合作为一个"工作单元".要么全部完成,要么全部不做. 每个事务都有一个开始和一个结束. 2 事务开始 1. 你连接到数据库并执行DML ...

  5. Oracle的关于建表,约束,查询等的练习

    从建立一个简单表,到实现一些复杂查询的例子, DROP TABLE grade;DROP TABLE item;DROP TABLE sporter;CREATE TABLE sporter( spo ...

  6. 【转】jQuery on()选择器函数

    on()函数用于为指定元素的一个或多个事件绑定事件处理函数. 此外,你还可以额外传递给事件处理函数一些所需的数据. 从jQuery 1.7开始,on()函数提供了绑定事件处理程序所需的所有功能,用于统 ...

  7. linux下的gdb调试工具--内存调试

    接着上一节的代码,在while(1)的循环里面增加代码:sum=0 #include <stdio.h> int main(void) { int sum = 0, i = 0; char ...

  8. mysql学习(六)-索引

    主键索引: 确定唯一的一条记录,只能有一个主键(primary key) 主键不能为空 1.create table if not exists t1(id int not null auto_inc ...

  9. action接收到来自jsp页面的请求时出现中文乱码问题处理方法

    写JSP程序时,在Servlet中取请求参数时出现了乱码,当然,这种乱码问题再简单不过了.由于在JSP中使用了GBK作用页面的编码,那么提交的中文信息自然也会被按着GBK进行编码,为%xx格式的GBK ...

  10. 解决chrome下上传文件 返回值带 <pre style="word-wrap:break-word;white-space:prewrap;"></pre>

    解决办法:后台 response.setContentType("text/html");