数据结构及算法
tianlangeff
这个作者很懒,什么都没留下…
展开
-
排序算法1--选择排序
最近一直在忙于自己的毕业课题,大部分时间都用在理论研究和在Linux下用NS2仿真上了,已经半年没有动手编写代码。为了巩固自己的基础知识,从最简单的选择排序开始复习。程序中可能有不足或错误的地方,欢迎大家指正!template class T>void swap(T *A, T *B)...{ T temp; temp = *A; *A = *B; *B = tem原创 2007-09-15 14:40:00 · 410 阅读 · 0 评论 -
排序算法2--冒泡排序
在冒泡排序的程序中,按升序排列使用了改进的冒泡排序算法,是得最好情况下时间复杂度为O(n),降序排列部分使用的是最基础冒泡排序template class T>void bubble_sort(T *Array, int Size, bool Ascending = true)...{ assert(Array != NULL); assert(Size >= 2); i原创 2007-09-15 15:23:00 · 348 阅读 · 0 评论 -
排序算法3--插入排序
template class T>void insertion_sort(T *Array, int Size, bool Ascending = true)...{ assert(Array != NULL); assert(Size >= 2); int i, temp; if (Ascending) ...{ for (i = 1原创 2007-09-15 15:26:00 · 292 阅读 · 0 评论 -
排序算法4--归并排序
前面3种排序算法都是简单的排序,效率不高,这里给出一个稍微复杂一点的排序算法,归并排序。分为两步,一是划分待排序数据,二是归并划分的子序列,归并排序是一个递归过程。template class T>void merge(T *Array, int First, int Mid, int Last)...{ T *temp = new T[Last - First + 1];原创 2007-09-16 01:03:00 · 393 阅读 · 0 评论 -
排序算法5--快速排序
快速排序也是分治策略的一种典型体现:将待排序数据划分成更小的序列,对每个划分的序列进行交换。这里所谓的交换是指在单独的一个序列里面,选取一个枢纽(pivot),以此枢纽为划分点,将该序列里面所有小于枢纽的数据放于枢纽的左边,大于枢纽值的数据放于枢纽值的右边。 枢纽的选择有多种,一般有四种选择:选取序列第一个元素、选取序列最后一个元素、选取序列(First +Last)/2个元素、随机选取一原创 2007-10-07 22:01:00 · 403 阅读 · 0 评论 -
排序算法5--堆排序
堆排序在最差情况下相比快速排序,具有更好的时间复杂度。template class T>void adjust_heap(vectorT> &Vct, int First, int Last)...{ int CurrentPos = First; int ChildPos = 2 * CurrentPos + 1; T Temp = Vct[First]; wh原创 2007-10-11 01:25:00 · 378 阅读 · 0 评论