Chinaunix首页 | 论坛 | 博客
  • 博客访问: 708323
  • 博文数量: 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归并网络



两两排序网络


此表待完善。

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