Chinaunix首页 | 论坛 | 博客
  • 博客访问: 726923
  • 博文数量: 90
  • 博客积分: 3225
  • 博客等级: 少校
  • 技术积分: 1200
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-20 11:04
个人简介

菩提本无树,明镜变非台 本来无一物,何处惹尘埃

文章分类

全部博文(90)

文章存档

2015年(1)

2014年(12)

2013年(15)

2012年(31)

2011年(8)

2010年(23)

分类: C/C++

2012-08-24 11:55:51

前言

 算法是何等重要,软件的好坏除了取决于架构之外,不外乎算法了。
 算法左右着系统的快慢。如果把系统架构相当于人的骨架话,那么算法就人心了。
单独从算法的时间或空间复杂度来考量一个算法的好坏, 这并不是一个很科学的方法。
因为不同的算法是针对不同的环境下研究出来的,并不存在一种适用于所有环境的算法。
因此研究算法时,除了知道怎么写之外,还要清楚算法的核心思想,适用范围以及稳定性等方面。

1 算法定义

 算法是为了解决某一类问题而设计的一个有限长的操作序列。

2 算法的特征

  1)有穷性
  2)确定性
  3)可行性
  4)输入
  5)可输出

3 算法设计的要求

  1)正确性
 
2)可读性
  3)健壮性
  4)时空效率

4 算法分析

  1)时间复杂度分析:T(n)=O(f(n)) ,指算法需执行计算的工作量。
  2)空间复杂度分析:指执行这个算法时所需的内存空间,

5 各类排序算法

分类 算法名 时间复杂度 优点 缺点 适用情况 代码实现
交换排序
冒泡排序 O(n2)


C , Go
鸡尾酒排序





奇偶排序




梳排序





























































































































































































交换排序法








奇偶排序



梳排序



侏儒排序



快速排序



臭皮匠算法



Bogo排序





选择排序法


选择排序



堆排序



smooth排序



笛卡尔树排序



锦标赛排序



循环排序




插入排序法

★

插入排序


★

希尔排序



二叉查找树排序



图书馆排序



Patience排序



归并排序法

★

归并排序



多相归并排序



strand排序







分布排序法


美国旗帜排序



珠排序



桶排序



爆炸排序



计数排序



鸽巣排序



相邻图排序



基数排序



闪电排序




混合排序法


Tim排序



内省排序



Spread排序



反移排序



J排序



其他


双调排序器



Batcher归并网络



两两排序网络


此表待完善。

阅读(2015) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~