数据结构和算法
奔跑的小蜗牛1992
这个作者很懒,什么都没留下…
展开
-
链表奇偶排序以及反转问题
将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转 如交换前:4->5->1->7->6 交换后:7->1->5->6->4思路:申请两个头结点podd,peven分别指向奇数和偶数,开始遍历链表,若为奇数,结点podd指向该结点;若为偶数,则结点peven指向该点。最后分别进行顺序反转。如只要输出反转结果,不改变指针结构,可以运用递归或者堆栈的原创 2016-09-24 18:53:48 · 1434 阅读 · 0 评论 -
全排列的递归算法
思路: 1.用数组记录操作后的序列,输出结果时只需要输出该数组即可; 2.交换第1个元素与第i(1=<i<=n)个元素,得到n个序列;把每个序列分成两部分:第一个元素,其余的元素;对其余元素执行全排列操作;(记得操作完后,将这两个元素交换回来,以方便下面的交换) 3.当剩余序列中只有一个元素时,得到一种排列结果,输出该结果比如:集合{ 1,2,3}的全排列为: { 1 2 3 } { 1 3 2原创 2016-12-01 21:58:32 · 748 阅读 · 0 评论 -
全排列之非递归实现
基本思想是: 1.对初始队列进行排序,找到所有排列中最小的一个排列Pmin。 2.找到刚刚好比Pmin大比其它都小的排列P(min+1)。 3.循环执行第二步,直到找到一个最大的排列,算法结束。 如排列ABCDE,这是所有排列中最小的一个排列,刚好比ABCDE大的排列是:ABCED。 算法如下: 给定已知序列P = A1A2A3.....An 对P按字典排序,得到P的一个最原创 2016-12-02 14:03:45 · 796 阅读 · 0 评论 -
排序算法总结
这篇文章总结了一些常用的排序算法,如有错误,还望指正。 分类 1)插入排序(直接插入排序、希尔排序) 2)交换排序(冒泡排序、快速排序) 3)选择排序(直接选择排序、堆排序) 4)归并排序 5)线性时间排序(计数排序、基数排序、桶排序) 直接插入排序 基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数原创 2016-12-03 20:28:45 · 313 阅读 · 0 评论