插入排序的实现

入排序,就是吧第p位置的数据,插入到容量为p的有序容器中。

当然,一般来说,我们可以重新分配一块新的空间,用来存放有序的数据。但是下面的例子是在就的空间上进行排序,每次插入操作就是把第p位置的数据插入到0~p的位置上:

template<typename Obj,typename Iterator_>

void _insert_sort(Iterator_ first,Iterator_ last,Obj)

{

       for(Iterator_ iter=first+1;iter!=last;++iter)

       {

              Obj obj=*iter;

              Iterator_ _iter;

              for(_iter=iter;_iter!=first;--_iter)

              {

                     if(obj<=*(_iter-1))

                            *(_iter)=*(_iter-1);

                     else

                            break;

              }

              *_iter=obj;

       }

}

完整的代码如下:

头文件:insert_sort.h

#ifndef ___INSERT_SORT_H_

#define ___INSERT_SORT_H_

template<typename Obj,typename Iterator_>

void _insert_sort(Iterator_ first,Iterator_ last,Obj)

{

for(Iterator_ iter=first+1;iter!=last;++iter)

{

Obj obj=*iter;

Iterator_ _iter;

for(_iter=iter;_iter!=first;--_iter)

{

if(obj<=*(_iter-1))

*(_iter)=*(_iter-1);

else

break;

}

*_iter=obj;

}

}

template<typename Iterator_>

void insert_sort(Iterator_& first,Iterator_& last)

{

_insert_sort(first,last,*first);

}



#endif


测试文件:test.cpp

#include<iostream>

#include"insert_sort.h"

#include<time.h>

using namespace std;

int main()

{

srand((int)time(NULL));

int iArray[100];

cout<<"the saw datas are:/n";

for(int i=0;i!=100;++i)

{

iArray[i]=rand()%100;

cout<<iArray[i]<<"/t";

}

cout<<endl;

int * first=iArray;

int * last=iArray+100;

insert_sort(first,last);

cout<<"after sort:/n";

for(int i=0;i!=100;++i)

{

cout<<iArray[i]<<"/t";

}

system("pause");

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值