资源简介
开源的压缩算法,可以直接在代码中实现,bzip2的压缩时间不是最快的,但是压缩的效率基本是最好的。而且封装了许多简化操作的接口。
代码片段和文件信息
/*-------------------------------------------------------------*/
/*--- Block sorting machinery ---*/
/*--- blocksort.c ---*/
/*-------------------------------------------------------------*/
/* ------------------------------------------------------------------
This file is part of bzip2/libbzip2 a program and library for
lossless block-sorting data compression.
bzip2/libbzip2 version 1.0.6 of 6 September 2010
Copyright (C) 1996-2010 Julian Seward
Please read the WARNING DISCLAIMER and PATENTS sections in the
README file.
This program is released under the terms of the license contained
in the file LICENSE.
------------------------------------------------------------------ */
#include “bzlib_private.h“
/*---------------------------------------------*/
/*--- Fallback O(N log(N)^2) sorting ---*/
/*--- algorithm for repetitive blocks ---*/
/*---------------------------------------------*/
/*---------------------------------------------*/
static
__inline__
void fallbackSimpleSort ( UInt32* fmap
UInt32* eclass
Int32 lo
Int32 hi )
{
Int32 i j tmp;
UInt32 ec_tmp;
if (lo == hi) return;
if (hi - lo > 3) {
for ( i = hi-4; i >= lo; i-- ) {
tmp = fmap[i];
ec_tmp = eclass[tmp];
for ( j = i+4; j <= hi && ec_tmp > eclass[fmap[j]]; j += 4 )
fmap[j-4] = fmap[j];
fmap[j-4] = tmp;
}
}
for ( i = hi-1; i >= lo; i-- ) {
tmp = fmap[i];
ec_tmp = eclass[tmp];
for ( j = i+1; j <= hi && ec_tmp > eclass[fmap[j]]; j++ )
fmap[j-1] = fmap[j];
fmap[j-1] = tmp;
}
}
/*---------------------------------------------*/
#define fswap(zz1 zz2) \
{ Int32 zztmp = zz1; zz1 = zz2; zz2 = zztmp; }
#define fvswap(zzp1 zzp2 zzn) \
{ \
Int32 yyp1 = (zzp1); \
Int32 yyp2 = (zzp2); \
Int32 yyn = (zzn); \
while (yyn > 0) { \
fswap(fmap[yyp1] fmap[yyp2]); \
yyp1++; yyp2++; yyn--; \
} \
}
#define fmin(ab) ((a) < (b)) ? (a) : (b)
#define fpush(lzhz) { stackLo[sp] = lz; \
stackHi[sp] = hz; \
sp++; }
#define fpop(lzhz) { sp--; \
lz = stackLo[sp]; \
hz = stackHi[sp]; }
#define FALLBACK_QSORT_SMALL_THRESH 10
#define FALLBACK_QSORT_STACK_SIZE 100
static
void fallbackQSort3 ( UInt32* fmap
UInt32* eclass
Int32 loSt
Int32 hiSt )
{
Int32 unLo unHi ltLo gtHi n m;
Int32 sp lo hi;
UInt32 med r r3;
Int32 stackLo[FALLBACK_QSORT_STACK_SIZE];
Int32 stackHi[FALLBACK_QSORT_STACK_SIZE
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 30694 2010-09-11 06:37 bzip2-1.0.6\blocksort.c
文件 1057 2007-01-03 10:00 bzip2-1.0.6\bz-common.xsl
文件 10585 2007-01-03 10:00 bzip2-1.0.6\bz-fo.xsl
文件 646 2007-01-03 10:00 bzip2-1.0.6\bz-html.xsl
文件 2128 2007-01-03 10:00 bzip2-1.0.6\bzdiff
文件 1677 2007-01-03 10:00 bzip2-1.0.6\bzgrep
文件 1746 2007-01-03 10:00 bzip2-1.0.6\bzip.css
文件 20935 2010-09-11 17:34 bzip2-1.0.6\bzip2.1.preformatted
文件 58556 2010-09-11 07:04 bzip2-1.0.6\bzip2.c
文件 18988 2010-09-11 17:35 bzip2-1.0.6\bzip2.txt
文件 14924 2010-09-11 07:18 bzip2-1.0.6\bzip2recover.c
文件 45995 2010-09-11 06:38 bzip2-1.0.6\bzlib.c
文件 6245 2010-09-11 07:08 bzip2-1.0.6\bzlib.h
文件 13244 2010-09-11 06:41 bzip2-1.0.6\bzlib_private.h
文件 1259 2007-01-03 10:00 bzip2-1.0.6\bzmore
文件 11417 2010-09-20 15:11 bzip2-1.0.6\CHANGES
文件 20561 2010-09-11 07:10 bzip2-1.0.6\compress.c
文件 4818 2010-09-11 06:43 bzip2-1.0.6\crctable.c
文件 20919 2010-09-11 06:43 bzip2-1.0.6\decompress.c
文件 4402 2007-01-03 10:00 bzip2-1.0.6\dlltest.c
文件 3516 2007-01-03 10:00 bzip2-1.0.6\dlltest.dsp
文件 4885 2011-05-12 21:48 bzip2-1.0.6\dlltest.vcproj
文件 240 2010-09-11 07:15 bzip2-1.0.6\entities.xm
文件 1689 2010-09-11 06:36 bzip2-1.0.6\format.pl
文件 6991 2010-09-11 06:37 bzip2-1.0.6\huffman.c
文件 517 2007-01-03 10:00 bzip2-1.0.6\libbz2.def
文件 618496 2011-05-26 10:41 bzip2-1.0.6\libbz2.dll
文件 4254 2007-01-03 10:00 bzip2-1.0.6\libbz2.dsp
文件 1144480 2011-05-26 10:41 bzip2-1.0.6\libbz2.ilk
文件 7627 2011-05-12 21:43 bzip2-1.0.6\libbz2.vcproj
............此处省略31个文件信息
- 上一篇:google地址解析
- 下一篇:计算机网络系统方法 第五版 课后答案英文版
评论
共有 条评论