算法
二月的羊
持恒
展开
-
快速排序算法
概念: 快速排序(Quicksort)是对冒泡排序的一种改进。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。 算法介绍: 设要排序的数组是A[0]……A[N-1],首先任意选取一个数原创 2013-04-23 18:35:27 · 488 阅读 · 0 评论 -
判断素数问题(C语言)
定义: 只能被1和其自身整除的整数,称为素数。问题一: 判断n是否为素数。代码如下:#include#includeint main(){ int n,i,j; scanf("%d",&n); j=sqrt(n); for(i=2;i<=j;i++) { if(n%i==0)原创 2013-04-26 16:36:29 · 1382 阅读 · 1 评论 -
大数阶乘
用数组求大数阶乘问题: 思路:用数组来存放阶乘的每一位数字,首先令第一位的数值为1,位数为1,然后将每次相乘的乘积存回数组,并循环处理数组中超过10的数,若数值超过10,则需要进位,将位数加1,原来的数除以10,商数加前一位的数值后存回前一位的数组中,再将余数存回原来位数的数组中。(如不甚明白,看具体实例) 实例:求5的阶乘。 i=2时,a[0]=2.原创 2013-04-26 22:30:40 · 562 阅读 · 0 评论 -
希尔排序
希尔排序又称为缩小增量排序,是1959年由D.L.Shell提出来的,它是一种插入排序类方法,但在时间效率上,较直接插入排序和折半插入排序有较大改进。(1)算法思想 不断地把待排序的一组记录按照间隔值分成若干小组,然后对同一组的记录进行排序。具体做法如下: a、取定一个正整数d1(d1 b、取定一个正整数d2(d2原创 2013-07-08 18:40:05 · 786 阅读 · 0 评论 -
直接插入排序算法
直接插入排序是一种最简单的排序方法,基本操作是将一个记录插入到已排好序的有序表中,从而得到一个新的、记录新增1的有序表。以此类推。基本思想 实现插入排序只要是先找到一个有序序列,然后将下一个关键字插入上述有序序列,再从剩下的关键字中选取下一个插入对象,反复执行,直到整个序列有序。核心代码void InsertSort(int a[]){ int i,j,t;原创 2013-07-16 18:09:28 · 671 阅读 · 0 评论 -
C#实现单向链表
链表是一种线性数据结构,使用它能动态地存储一种结构数据。链表是n个数据元素的有限序列,其元素需要自己定义,既可以是一个整数或一个字符串。在计算机程序设计中,经常使用链表。一、技术要点: 链表是一种重要的数据结构,该结构由节点组成。每个节点包含两部分数据,第一部分是节点本身的数据,第二部分是指向下一个节点的指针。对于单向链表,链表中存在两个特殊的节点,分别为“头结点”和“尾节点”原创 2013-07-18 20:31:32 · 1753 阅读 · 1 评论 -
C++实现全排列
问题描述: 有n个元素,我们的目的是生成这n个元素的全排列。算法设计思路: (1)将规模为n的排列问题转化为规模为n-1的排列问题; (2)将规模为n-1的排列问题转化为规模为n-2的排列问题; (3)以此类推。针对具体问题可以这么理解:(这里假设a[ ]={1,2,3,4,.....}) (1)如果n=1,很显然,n的全原创 2013-09-17 11:06:08 · 866 阅读 · 0 评论