算法一:排序和数据结构体

一、排序算法

1、桶排序法:最傻的方法。

2、冒泡排序:时间复杂度O(N^2),其实没什么用。

3、快速排序:Charles Antony Richard Hoare提出。

不像冒泡排序,只在旁边左右交换,每次交换式跳跃式的,所以平均时间复杂度是O(NlogN),最差情况也是O(N^2)。

step1、数组的两端开始往中心走,两两比较,大小不同交换。

step2、到达中心时,再分成两段,继续step1执行。


二、数据结构:

1、队列queue:First in First out (FIFO)

struct  queue

{

int data[100];

int head;

int tail;

}

应用:广度优先搜索,队列优化的Bellman-Ford最短路算法

2、栈stack:Last in First out(LIFO),时间复杂度O(1)

typedef struct Node
{
int data;    //内容
  struct Node * pNext; //指向下一结点的指针
} NODE, * PNODE;  

//定义栈的结构体
typedef struct Stack
{
PNODE pTop;    //栈顶结点
PNODE pBottom;   //栈底结点
} STACK, * PSTACK; 

应用:子程序调用和返回。

3、链表linked list

struct node

{

int data;

struct node *next;

}


阅读更多
个人分类: 算法
上一篇工作感悟
下一篇漫水填充算法描述
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭