排序算法之(3)——插入排序
2015-06-08 20:08
344 查看
【插入排序的思路】
插入排序首先把第0个数作为已排好的数,然后依次将位置1、2……n-1上的数插入到已排好的数中,那么插入排序总共需要n-1趟,每一趟把一个数插入到最终位置。【实现代码一】
#include<iostream> using namespace std; void insert(int list[],int n); void insert(int list[],int n) { for(int i=1;i<=n-1;i++) { int temp=list[i]; int j=i-1; while(j>=0&&list[j]>temp) { list[j+1]=list[j]; j--; } list[j+1]=temp; } } int main() { int list[]={2, 1 ,0, 5 ,8 ,7, 6 ,4 ,3, 9}; insert(list,10); for(int i=0;i<=9;i++) { cout<<list[i]<<" "; } cout<<endl; system("pause"); return 0; }
或许你会想,如果我们的数据是double型的呢,那是不是还要写一个void insert(double list[],int n)函数呢?
下面我们使用模板函数来实现适合多种类型数据的插入排序算法。
【实现代码二】
#include<iostream> using namespace std; //定义模板函数 template<class T> void insert(T list[],int n); template<class T> void insert(T list[],int n) { for(int i=1;i<=n-1;i++) { T temp=list[i]; int j=i-1; while(j>=0&&list[j]>temp) { list[j+1]=list[j]; j--; } list[j+1]=temp; } } int main() { //int list[]={2, 1 ,0, 5 ,8 ,7, 6 ,4 ,3, 9}; double list[]={2.5, 1.9 ,0, 5 ,8 ,7.9, 6 ,4 ,3.4, 9}; insert(list,10); for(int i=0;i<=9;i++) { cout<<list[i]<<" "; } cout<<endl; system("pause"); return 0; }
相关文章推荐
- 使用阿里巴巴数据源遇到的监控页面打不开的问题
- [.net 面向对象编程基础] (16) 接口
- string类型转换为int, float, double类型、随机数生成
- Linux POSIX Message Queue 使用体会
- C#5.0之后推荐使用TPL(Task Parallel Libray 任务并行库) 和PLINQ(Parallel LINQ, 并行Linq). 其次是TAP(Task-based Asynchronous Pattern, 基于任务的异步模式)
- Ice_cream's world I(并查集之判断有几个圈)
- postfix和dovecot简单的邮件服务器
- max_element
- QtableWidget常用属性设置
- 复杂网络盘传播搜索关键字
- Select和epoll的区别
- Java-插入排序
- zerglurker的C语言教程003——基本数据类型
- 产品经理立项文档
- 黑马程序员——Java基础---I/O流(中[字节流])
- 完整的堆栈JavaScript路(十五)HTML5 focus 扩大 (扩展点)
- go语言实现的目录共享程序
- equals,==的区别
- Windows下PHP5.6.9+Apache2.4的安装配置
- 响应式web设计之CSS3 Media Queries