算法导论笔记
baother0
这个作者很懒,什么都没留下…
展开
-
算法导论-堆排序
#include "stdio.h"//递归void MAX_HEAPIFY (int *A,int pos,int length) { int l = pos << 1; int r = (pos << 1) + 1; int largest = pos; if (l <= length && A[largest] < A[l]) { largest = l;原创 2013-08-29 21:24:35 · 681 阅读 · 0 评论 -
算法导论-简单的插入排序
插入排序:适合数据量比较小的排序。最坏的情况下运行时间是O(n2)(表示n的平方),最好的情况下运行时间是O(n)具体的代码如下:插入排序: public static void insertion_sort (int a[]) { for (int i = 1;i < a.length;i++) { int key = a[i]; int j = i -原创 2012-04-24 20:11:29 · 637 阅读 · 0 评论 -
快速排序(1)
#include "stdio.h"//最朴素的快速排序,使用的是分治的策略//循环不变式为:下标index在[q,i]时,有A[index] pivot,下标index在[j+1,r-1],A[x]还没有和pivot比较。int PARTITION (int *A,int q,int r) {//下标从1开始 int i = q - 1; int j; int pivot = A原创 2013-09-06 21:51:26 · 667 阅读 · 0 评论 -
算法导论-优先级队列
//优先级队列//堆的一个很常见的应用:作为高效的优先级队列(priority queue)。//优先级队列和堆一样有二种:最大优先级队列和最小优先级队列, 优先级队列是一种维护由一组元素构成的集合S的数据结构,这一组元素中的每一个都有一个关键字key一个最大优先级队列支持下面的操作:/*1:INSERT(S,x):把元素x插入集合S中。 *2:MAXIMUM(S):返回S中具有最大关键字原创 2013-08-30 13:17:08 · 977 阅读 · 0 评论