亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? blocksort.c

?? p2p技術C源代碼.rar
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*-------------------------------------------------------------*//*--- Block sorting machinery                               ---*//*---                                           blocksort.c ---*//*-------------------------------------------------------------*//*--  This file is a part of bzip2 and/or libbzip2, a program and  library for lossless, block-sorting data compression.  Copyright (C) 1996-2002 Julian R Seward.  All rights reserved.  Redistribution and use in source and binary forms, with or without  modification, are permitted provided that the following conditions  are met:  1. Redistributions of source code must retain the above copyright     notice, this list of conditions and the following disclaimer.  2. The origin of this software must not be misrepresented; you must      not claim that you wrote the original software.  If you use this      software in a product, an acknowledgment in the product      documentation would be appreciated but is not required.  3. Altered source versions must be plainly marked as such, and must     not be misrepresented as being the original software.  4. The name of the author may not be used to endorse or promote      products derived from this software without specific prior written      permission.  THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  Julian Seward, Cambridge, UK.  jseward@acm.org  bzip2/libbzip2 version 1.0 of 21 March 2000  This program is based on (at least) the work of:     Mike Burrows     David Wheeler     Peter Fenwick     Alistair Moffat     Radford Neal     Ian H. Witten     Robert Sedgewick     Jon L. Bentley  For more information on these sources, see the manual.  To get some idea how the block sorting algorithms in this file   work, read my paper      On the Performance of BWT Sorting Algorithms  in Proceedings of the IEEE Data Compression Conference 2000,  Snowbird, Utah, USA, 27-30 March 2000.  The main sort in this  file implements the algorithm called  cache  in the paper.--*/#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(a,b) ((a) < (b)) ? (a) : (b)#define fpush(lz,hz) { stackLo[sp] = lz; \                       stackHi[sp] = hz; \                       sp++; }#define fpop(lz,hz) { sp--;              \                      lz = stackLo[sp];  \                      hz = stackHi[sp]; }#define FALLBACK_QSORT_SMALL_THRESH 10#define FALLBACK_QSORT_STACK_SIZE   100staticvoid 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];   r = 0;   sp = 0;   fpush ( loSt, hiSt );   while (sp > 0) {      AssertH ( sp < FALLBACK_QSORT_STACK_SIZE, 1004 );      fpop ( lo, hi );      if (hi - lo < FALLBACK_QSORT_SMALL_THRESH) {         fallbackSimpleSort ( fmap, eclass, lo, hi );         continue;      }      /* Random partitioning.  Median of 3 sometimes fails to         avoid bad cases.  Median of 9 seems to help but          looks rather expensive.  This too seems to work but         is cheaper.  Guidance for the magic constants          7621 and 32768 is taken from Sedgewick's algorithms         book, chapter 35.      */      r = ((r * 7621) + 1) % 32768;      r3 = r % 3;      if (r3 == 0) med = eclass[fmap[lo]]; else      if (r3 == 1) med = eclass[fmap[(lo+hi)>>1]]; else                   med = eclass[fmap[hi]];      unLo = ltLo = lo;      unHi = gtHi = hi;      while (1) {         while (1) {            if (unLo > unHi) break;            n = (Int32)eclass[fmap[unLo]] - (Int32)med;            if (n == 0) {                fswap(fmap[unLo], fmap[ltLo]);                ltLo++; unLo++;                continue;             };            if (n > 0) break;            unLo++;         }         while (1) {            if (unLo > unHi) break;            n = (Int32)eclass[fmap[unHi]] - (Int32)med;            if (n == 0) {                fswap(fmap[unHi], fmap[gtHi]);                gtHi--; unHi--;                continue;             };            if (n < 0) break;            unHi--;         }         if (unLo > unHi) break;         fswap(fmap[unLo], fmap[unHi]); unLo++; unHi--;      }      AssertD ( unHi == unLo-1, "fallbackQSort3(2)" );      if (gtHi < ltLo) continue;      n = fmin(ltLo-lo, unLo-ltLo); fvswap(lo, unLo-n, n);      m = fmin(hi-gtHi, gtHi-unHi); fvswap(unLo, hi-m+1, m);      n = lo + unLo - ltLo - 1;      m = hi - (gtHi - unHi) + 1;      if (n - lo > hi - m) {         fpush ( lo, n );         fpush ( m, hi );      } else {         fpush ( m, hi );         fpush ( lo, n );      }   }}#undef fmin#undef fpush#undef fpop#undef fswap#undef fvswap#undef FALLBACK_QSORT_SMALL_THRESH#undef FALLBACK_QSORT_STACK_SIZE/*---------------------------------------------*//* Pre:      nblock > 0      eclass exists for [0 .. nblock-1]      ((UChar*)eclass) [0 .. nblock-1] holds block      ptr exists for [0 .. nblock-1]   Post:      ((UChar*)eclass) [0 .. nblock-1] holds block      All other areas of eclass destroyed      fmap [0 .. nblock-1] holds sorted order      bhtab [ 0 .. 2+(nblock/32) ] destroyed*/#define       SET_BH(zz)  bhtab[(zz) >> 5] |= (1 << ((zz) & 31))#define     CLEAR_BH(zz)  bhtab[(zz) >> 5] &= ~(1 << ((zz) & 31))#define     ISSET_BH(zz)  (bhtab[(zz) >> 5] & (1 << ((zz) & 31)))#define      WORD_BH(zz)  bhtab[(zz) >> 5]#define UNALIGNED_BH(zz)  ((zz) & 0x01f)staticvoid fallbackSort ( UInt32* fmap,                     UInt32* eclass,                     UInt32* bhtab,                    Int32   nblock,                    Int32   verb ){   Int32 ftab[257];   Int32 ftabCopy[256];   Int32 H, i, j, k, l, r, cc, cc1;   Int32 nNotDone;   Int32 nBhtab;   UChar* eclass8 = (UChar*)eclass;   /*--      Initial 1-char radix sort to generate      initial fmap and initial BH bits.   --*/   if (verb >= 4)      VPrintf0 ( "        bucket sorting ...\n" );   for (i = 0; i < 257;    i++) ftab[i] = 0;   for (i = 0; i < nblock; i++) ftab[eclass8[i]]++;   for (i = 0; i < 256;    i++) ftabCopy[i] = ftab[i];   for (i = 1; i < 257;    i++) ftab[i] += ftab[i-1];   for (i = 0; i < nblock; i++) {      j = eclass8[i];      k = ftab[j] - 1;      ftab[j] = k;      fmap[k] = i;   }   nBhtab = 2 + (nblock / 32);   for (i = 0; i < nBhtab; i++) bhtab[i] = 0;   for (i = 0; i < 256; i++) SET_BH(ftab[i]);   /*--      Inductively refine the buckets.  Kind-of an      "exponential radix sort" (!), inspired by the      Manber-Myers suffix array construction algorithm.   --*/   /*-- set sentinel bits for block-end detection --*/   for (i = 0; i < 32; i++) {       SET_BH(nblock + 2*i);      CLEAR_BH(nblock + 2*i + 1);   }   /*-- the log(N) loop --*/   H = 1;   while (1) {      if (verb >= 4)          VPrintf1 ( "        depth %6d has ", H );      j = 0;      for (i = 0; i < nblock; i++) {         if (ISSET_BH(i)) j = i;         k = fmap[i] - H; if (k < 0) k += nblock;         eclass[k] = j;      }      nNotDone = 0;      r = -1;      while (1) {	 /*-- find the next non-singleton bucket --*/         k = r + 1;         while (ISSET_BH(k) && UNALIGNED_BH(k)) k++;         if (ISSET_BH(k)) {            while (WORD_BH(k) == 0xffffffff) k += 32;            while (ISSET_BH(k)) k++;         }         l = k - 1;         if (l >= nblock) break;         while (!ISSET_BH(k) && UNALIGNED_BH(k)) k++;         if (!ISSET_BH(k)) {            while (WORD_BH(k) == 0x00000000) k += 32;            while (!ISSET_BH(k)) k++;         }         r = k - 1;         if (r >= nblock) break;         /*-- now [l, r] bracket current bucket --*/         if (r > l) {            nNotDone += (r - l + 1);            fallbackQSort3 ( fmap, eclass, l, r );            /*-- scan bucket and generate header bits-- */            cc = -1;            for (i = l; i <= r; i++) {               cc1 = eclass[fmap[i]];               if (cc != cc1) { SET_BH(i); cc = cc1; };            }         }      }      if (verb >= 4)          VPrintf1 ( "%6d unresolved strings\n", nNotDone );      H *= 2;      if (H > nblock || nNotDone == 0) break;   }   /*--       Reconstruct the original block in      eclass8 [0 .. nblock-1], since the      previous phase destroyed it.   --*/   if (verb >= 4)      VPrintf0 ( "        reconstructing block ...\n" );   j = 0;   for (i = 0; i < nblock; i++) {      while (ftabCopy[j] == 0) j++;      ftabCopy[j]--;      eclass8[fmap[i]] = (UChar)j;   }   AssertH ( j < 256, 1005 );}#undef       SET_BH#undef     CLEAR_BH#undef     ISSET_BH#undef      WORD_BH

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区四区| 精品国产91久久久久久久妲己 | 亚洲夂夂婷婷色拍ww47| 综合激情成人伊人| 久久丝袜美腿综合| 国产亚洲人成网站| 国产精品亲子乱子伦xxxx裸| 久久久五月婷婷| 中文字幕高清不卡| 亚洲人成在线观看一区二区| 亚洲一区日韩精品中文字幕| 婷婷综合另类小说色区| 日韩中文字幕区一区有砖一区 | 国产女同性恋一区二区| 欧美国产成人在线| 一区二区免费在线播放| 首页亚洲欧美制服丝腿| 另类成人小视频在线| 国产成人亚洲综合a∨猫咪| 成人白浆超碰人人人人| 91福利社在线观看| 91麻豆精品国产91久久久更新时间 | 精品久久人人做人人爽| 久久九九影视网| 亚洲黄色av一区| 午夜视频在线观看一区| 色综合久久久久久久久久久| 色国产综合视频| 欧美电影免费观看完整版| 久久免费精品国产久精品久久久久| 中文字幕国产一区| 亚洲成a人在线观看| 激情欧美一区二区| 91小视频在线| 精品日韩欧美在线| 亚洲欧美日韩国产一区二区三区| 蜜芽一区二区三区| 9人人澡人人爽人人精品| 欧美一区二区网站| 中文字幕在线观看不卡| 麻豆国产精品视频| 在线视频欧美精品| 国产日产亚洲精品系列| 三级一区在线视频先锋| 波多野结衣在线一区| 欧美一区二区精品在线| 亚洲视频一二三区| 国产精品性做久久久久久| 精品视频色一区| 国产精品丝袜一区| 精品中文字幕一区二区小辣椒| 91国在线观看| 国产精品免费视频一区| 韩国午夜理伦三级不卡影院| 欧美性猛交xxxxxxxx| 国产精品福利一区二区| 国产在线看一区| 欧美一级黄色录像| 亚洲成人久久影院| 欧美伊人久久久久久久久影院| 欧美激情在线看| 黄色精品一二区| 日韩一区二区不卡| 免费人成网站在线观看欧美高清| 欧美日韩中文另类| 亚洲电影一级黄| 91成人在线精品| 亚洲精品中文字幕在线观看| 色菇凉天天综合网| 一区二区三区在线观看欧美| 99久久国产综合精品麻豆| 国产精品网站导航| 粉嫩一区二区三区在线看| 久久久不卡影院| 国产成人aaaa| 亚洲欧洲精品一区二区三区| jlzzjlzz欧美大全| 亚洲精品国产精品乱码不99| www.视频一区| 一区二区理论电影在线观看| 色婷婷综合视频在线观看| 亚洲欧洲制服丝袜| 欧美性猛交xxxx乱大交退制版 | 一本大道久久精品懂色aⅴ | 欧美日韩久久久一区| 亚洲成a人v欧美综合天堂| 911精品产国品一二三产区| 日韩电影网1区2区| 久久一日本道色综合| 国产白丝网站精品污在线入口| 中文字幕免费不卡在线| av资源站一区| 亚洲成人综合视频| 欧美精品一区二区高清在线观看| 国产伦理精品不卡| 亚洲免费在线看| 8v天堂国产在线一区二区| 激情综合一区二区三区| 国产日韩影视精品| 91美女片黄在线观看| 日韩国产欧美在线视频| 久久蜜桃av一区二区天堂| 91影院在线观看| 日本一道高清亚洲日美韩| 国产欧美一二三区| 欧美亚洲综合一区| 国产精品18久久久久久久网站| 亚洲丝袜精品丝袜在线| 日韩一区二区不卡| 色偷偷一区二区三区| 日本不卡一区二区三区| 欧美激情综合在线| 欧美高清hd18日本| www.日韩在线| 麻豆久久久久久久| 一区二区三区四区在线播放| 日韩精品一区二区三区在线| 99re热这里只有精品免费视频| 天堂蜜桃91精品| 国产精品免费人成网站| 日韩精品资源二区在线| 色噜噜偷拍精品综合在线| 韩国三级电影一区二区| 亚洲国产精品久久不卡毛片| 国产欧美一区二区三区鸳鸯浴| 欧美日韩成人综合| 99久久综合精品| 国产成人鲁色资源国产91色综 | 日本一区二区免费在线观看视频 | 不卡欧美aaaaa| 男人操女人的视频在线观看欧美| 亚洲欧美一区二区三区国产精品 | 在线观看国产一区二区| 高清不卡一区二区| 国内久久精品视频| 久久 天天综合| 日本中文字幕一区二区有限公司| 亚洲码国产岛国毛片在线| 国产日韩视频一区二区三区| 精品蜜桃在线看| 这里只有精品99re| 欧美日韩高清在线| 欧美日韩国产小视频在线观看| 91免费在线看| 91亚洲精品一区二区乱码| 国产69精品久久久久毛片| 国产传媒一区在线| 国产精品69毛片高清亚洲| 韩国在线一区二区| 国产精品88av| 国产精品一区二区三区乱码| 国内久久婷婷综合| 国产一区二区三区在线看麻豆| 精品一二三四区| 狠狠色丁香久久婷婷综合丁香| 久久爱www久久做| 精品一区在线看| 国产一区二区免费看| 国产经典欧美精品| 成人教育av在线| 91在线视频播放地址| 色悠久久久久综合欧美99| 在线一区二区三区四区五区| 欧美视频一区二区三区| 在线播放91灌醉迷j高跟美女 | 老司机精品视频导航| 国产一区 二区| 成人av网站免费观看| 91福利在线看| 日韩亚洲欧美中文三级| 久久久91精品国产一区二区精品| 国产精品天天看| 亚洲福利一区二区| 久草这里只有精品视频| 欧美系列在线观看| 777午夜精品视频在线播放| 精品动漫一区二区三区在线观看| 久久人人爽人人爽| 亚洲欧美另类小说| 日韩成人精品视频| 国产成人精品免费网站| 色94色欧美sute亚洲线路一久| 欧美色综合久久| 久久久久久久综合| 一区二区理论电影在线观看| 麻豆成人综合网| 91视频免费播放| 日韩亚洲欧美成人一区| 国产精品青草综合久久久久99| 亚洲国产精品一区二区www| 国产乱码一区二区三区| 在线一区二区三区四区| 久久婷婷色综合| 亚洲国产另类av| 成人白浆超碰人人人人| 日韩欧美综合在线| 亚洲精品欧美激情| 国产精品一区2区| 欧美一区二区三级| 亚洲乱码国产乱码精品精小说|