算法与数据结构
Tommy
随遇而安
展开
-
队列(queue)
队列简称队,是线性表的一种特殊形式,是一种应用很广泛的数据结构.对于它的所有插入在表的一端进行;所有删除在表的另一端进行.从一端进队,从另一端出队,既先进先出原则,称为先进先出表(First In First Out,简称FIFO) 设队q=(a1,a2,......,an)中,a1为允许删除的一端,称为头(front),用F表示;an为允许插入的一端,称为尾(rear),用R表示.队列原创 2008-01-24 11:00:00 · 990 阅读 · 0 评论 -
音频编解码标准
PCMU(G.711U)类型:Audio制定者:ITU-T所需频宽:64Kbps(90.4)特性:PCMU和PCMA都能提供较好的语音质量,但是它们占用的带宽较高,需要64kbps。优点:语音质量优缺点:占用的带宽较高应用领域:voip版税方式:Free备注:PCMU and PCMA都能够达到CD音质,但是它们消耗的带宽也最多(64kbps)。如果网络带宽比较低,可以选用低比特速率的编码方法,如转载 2008-05-04 09:48:00 · 1868 阅读 · 0 评论 -
堆栈(stack)
堆栈又称为栈, 是一种应用十分广泛的数据结构. 在一端进行插入和删除.因此后进入的原始必须先退出,先进入必须后退出,栈底(bottom),栈顶(top),通常说"后进先出"(Last In First Out,简称LIFO)或"先进后出"(FILO)堆栈的基本运算:int stack[MAX]; /*数组下标从0~MAX-1/int tp; /*top of stack,全局变量*/原创 2008-01-23 22:17:00 · 653 阅读 · 0 评论 -
快速排序
快速排序的概念:在待排序队列中取一数为标准数,依次将比较区间内的所有数按大小放于该标准数的左右2边.然后对这2组分别重复上述的方法,直到所有书都排到相应的位置为止.#include iostream>//快速排序void quickSort(int arr[], int left, int right);//划分int partition(int arr[], int left, int ri转载 2008-02-29 17:53:00 · 618 阅读 · 0 评论 -
直接选择排序
直接选择排序的作法是:第一趟扫描所有数据,选择其中最小的一个与第一个数据互换;第二趟从第二个数据开始向后扫描,选择最小的与第二个数据互换;依次进行下去,进行了(n-1)趟扫描以后就完成了整个排序过程。 算法:void selectsort(int a[],int n){ int i,j,p,temp; for(i=1;i { p=i; //准备 for(j=i+1;j原创 2008-02-29 17:10:00 · 617 阅读 · 0 评论 -
起泡排序
起泡排序起泡排序的算法思想是:通过无序区中相邻记录关键字间的比较和位置的交换,使关键字最小的记录如气泡一般逐渐往上“漂浮”直至“水面”。整个算法是从最下面的记录开始,对每两个相邻的关键字进行比较,且使关键字较小的记录换至关键字较大的记录之上,使得经过一趟气泡排序后,关键字最小的记录到达最上端,接着,再在剩下的记录中找关键字最小的记录,并把它换在第二个位置上。依此类推,一直到所有的记录都有序为止,实原创 2008-02-29 17:11:00 · 1188 阅读 · 0 评论 -
Shell插入排序
Shell插入排序 希尔排序基本思想基本思想:先取一个小于n的整数d1作为第一个增量,把文件的全部记录分成d1个组。所有距离为dl的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2该方法实质上是一种分组插入方法。希尔排序(Shell sort)也称“缩小增量排序”。它的做法不是每次一个元素挨一个元素的比较。而是先将整个待排记录序列分割成为若干子序列分别进行直接插入排序,原创 2008-02-29 11:54:00 · 1091 阅读 · 0 评论 -
二分法插入排序
二分法插入排序 算法思想简单描述:在插入第i个元素时,对前面的0~i-1元素进行折半,先跟他们中间的那个元素比,如果小,则对前半再进行折半,否则对后半进行折半,直到left>right,然后再把第i个元素前1位与目标位置之间的所有元素后移,再把第i个元素放在目标位置上。二分法没有排序,只有查找。所以当找到要插入的位置时。移动必须从最后一个记录开始,向后移动一位,再移动倒数第2位,直到要插入的位置的原创 2008-02-29 10:48:00 · 13140 阅读 · 1 评论 -
直接插入排序
直接插入排序是一种最简单的排序方法,它的基本思想是依次将每个记录插入到一个有序中去。就是说,第i(i>=1)遍整理时,A1,A2,...,Ai-1已经是排好序的子序列;取出第i个元素Ai,在已排好序的子序列为Ai找到一个合适的位置,并将它插到该位置上。易知上述排序当i=1时实际上为空操作,故可直接从i=2开始。为了便于控制循环结束,引入元素A[0],行时可以节省时间,直接插入排序的算法如下:原创 2008-02-29 10:39:00 · 1070 阅读 · 0 评论 -
链表
链表是一种不要求连续存储空间的线性表,即存储单元可以是不连续的. 数据域 data 指针域 next 其中存储数据元素信息的域称作数据域(设域名为data),存储直接后继存储位置的域称为指针域(设域名为next)。指针域中存储的信息又称做指针或链。 由分别表示,,…, 的N 个结点依次相链构成的链表,称为线性表的链式存储表示,由于此类链表的每个结点中只包含原创 2008-02-01 22:07:00 · 757 阅读 · 0 评论 -
Josephus问题
Josephus问题:一群小孩围成一圈,任意假定一个数m,从第s个小孩起,顺时针方向数,每数到第m个小孩时,该小孩就离开,小孩不断离开,圈子不断缩小。最后,剩下的一个小孩便是胜利者。究竟胜利者是第几个小孩呢?#include "stdafx.h"#include using namespace std;//初始前n个数据void InitData(int *p,int n){ for (i原创 2009-01-05 11:44:00 · 1065 阅读 · 0 评论