• 大小: 1.35MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-08-29
  • 语言: 其他
  • 标签:

资源简介

开源的压缩算法,可以直接在代码中实现,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.xml

     文件       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个文件信息

评论

共有 条评论

相关资源