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

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

?? qsort_type.cc

?? sparselib庫
?? CC
字號:
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*//*             ********   ***                                 SparseLib++    *//*          *******  **  ***       ***      ***                              *//*           *****      ***     ******** ********                            *//*            *****    ***     ******** ********              R. Pozo        *//*       **  *******  ***   **   ***      ***                 K. Remington   *//*        ********   ********                                 A. Lumsdaine   *//*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*//*                                                                           *//*                                                                           *//*                     SparseLib++ : Sparse Matrix Library                   *//*                                                                           *//*               National Institute of Standards and Technology              *//*                        University of Notre Dame                           *//*              Authors: R. Pozo, K. Remington, A. Lumsdaine                 *//*                                                                           *//*                                 NOTICE                                    *//*                                                                           *//* Permission to use, copy, modify, and distribute this software and         *//* its documentation for any purpose and without fee is hereby granted       *//* provided that the above notice appear in all copies and supporting        *//* documentation.                                                            *//*                                                                           *//* Neither the Institutions (National Institute of Standards and Technology, *//* University of Notre Dame) nor the Authors make any representations about  *//* the suitability of this software for any purpose.  This software is       *//* provided ``as is'' without expressed or implied warranty.                 *//*                                                                           *//*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/// An adaptation of Schmidt's new quicksort (taken from GNU emacs)// for MV++// by Andrew Lumsdaine#include "qsort_TYPE.h"#ifdef sparc#include <alloca.h>#endif// Invoke the < comparison function#define CMP(A,B) ((A) < (B))// swap two items//static inline void SWAP_TYPE(TYPE &A, TYPE &B){    TYPE tmp = A; A = B; B = tmp;} static inline void swap_int(int &a, int &b){    int tmp=a; a=b; b=tmp;}// This should be replaced by a standard ANSI macro.#define BYTES_PER_WORD 8/* The next 4 #defines implement a very fast in-line stack abstraction. */#define STACK_SIZE (BYTES_PER_WORD * sizeof (long))#define PUSH(LOW,HIGH) do {top->lo = LOW;top++->hi = HIGH;} while (0)#define POP(LOW,HIGH)  do {LOW = (--top)->lo;HIGH = top->hi;} while (0)#define STACK_NOT_EMPTY (stack < top)                /* Discontinue quicksort algorithm when partition gets below this size.   This particular magic number was chosen to work best on a Sun 4/260. */#define MAX_THRESH 4/* Stack node declarations used to store unfulfilled partition obligations. */typedef struct {  int lo;  int hi;} stack_node;/* Order size using quicksort.  This implementation incorporates   four optimizations discussed in Sedgewick:      1. Non-recursive, using an explicit stack of pointer that store the       next array partition to sort.  To save time, this maximum amount       of space required to store an array of MAX_INT is allocated on the       stack.  Assuming a 32-bit integer, this needs only 32 *       sizeof (stack_node) == 136 bits.  Pretty cheap, actually.   2. Chose the pivot element using a median-of-three decision tree.      This reduces the probability of selecting a bad pivot value and       eliminates certain extraneous comparisons.   3. Only quicksorts TOTAL_ELEMS / MAX_THRESH partitions, leaving      insertion sort to order the MAX_THRESH items within each partition.        This is a big win, since insertion sort is faster for small, mostly      sorted array segments.      4. The larger of the two sub-partitions is always pushed onto the      stack first, with the algorithm then concentrating on the      smaller partition.  This *guarantees* no more than log (n)      stack size is needed (actually O(1) in this case)! */      int QSort(VECTOR_TYPE& v, int base_ptr, int total_elems){  TYPE pivot_buffer;    if (total_elems > MAX_THRESH) {        int lo = base_ptr;    int hi = lo + total_elems - 1;        stack_node stack[STACK_SIZE]; /* Largest size needed for 32-bit int!!! */    stack_node *top = stack + 1;        while (STACK_NOT_EMPTY) {      int left_ptr;      int right_ptr;      {    {      /* Select median value from among LO, MID, and HI. Rearrange         LO and HI so the three values are sorted. This lowers the          probability of picking a pathological pivot value and          skips a comparison for both the LEFT_PTR and RIGHT_PTR. */            int mid = lo + (hi - lo) / 2;            if (CMP (v[mid], v[lo]))        SWAP_TYPE(v[mid], v[lo]);      if (CMP (v[hi], v[mid]))        SWAP_TYPE(v[hi], v[mid]);      else         goto jump_over;            if (CMP (v[mid], v[lo]))        SWAP_TYPE(v[mid], v[lo]);          jump_over:      pivot_buffer = v[mid];    }        left_ptr  = lo + 1;    right_ptr = hi - 1;        /* Here's the famous ``collapse the walls'' section of quicksort.         Gotta like those tight inner loops!  They are the main reason        that this algorithm runs much faster than others. */    do {      while (CMP (v[left_ptr], pivot_buffer))        left_ptr++;            while (CMP (pivot_buffer, v[right_ptr]))        right_ptr--;            if (left_ptr < right_ptr) {        SWAP_TYPE(v[left_ptr], v[right_ptr]);        left_ptr++;        right_ptr--;      } else if (left_ptr == right_ptr) {        left_ptr ++;        right_ptr --;        break;      }    } while (left_ptr <= right_ptr);      }            /* Set up pointers for next iteration.  First determine whether     left and right partitions are below the threshold size. If so,      ignore one or both.  Otherwise, push the larger partition's     bounds on the stack and continue sorting the smaller one. */            if ((right_ptr - lo) <= MAX_THRESH) {    if ((hi - left_ptr) <= MAX_THRESH)      POP (lo, hi);     else      lo = left_ptr;      } else if ((hi - left_ptr) <= MAX_THRESH)    hi = right_ptr;      else if ((right_ptr - lo) > (hi - left_ptr)) {                       PUSH (lo, right_ptr);    lo = left_ptr;      } else {                       PUSH (left_ptr, hi);    hi = right_ptr;      }    }  }    /* Once the BASE_PTR array is partially sorted by quicksort the rest     is completely sorted using insertion sort, since this is efficient      for partitions below MAX_THRESH size. BASE_PTR points to the beginning      of the array to sort, and END_PTR points at the very last element in     the array (*not* one beyond it!). */  #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))  {    int end_ptr = base_ptr + total_elems - 1;    int run_ptr;    int tmp_ptr = base_ptr;    int thresh = MIN (end_ptr, base_ptr + MAX_THRESH);        for (run_ptr = tmp_ptr + 1; run_ptr <= thresh; run_ptr++)      if (CMP (v[run_ptr], v[tmp_ptr]))    tmp_ptr = run_ptr;        if (tmp_ptr != base_ptr)      SWAP_TYPE(v[tmp_ptr], v[base_ptr]);        for (run_ptr = base_ptr + 1; (tmp_ptr = run_ptr += 1) <= end_ptr;) {            while (CMP (v[run_ptr], v[tmp_ptr -= 1]))    ;            if ((tmp_ptr += 1) != run_ptr) {    int trav;        for (trav = run_ptr + 1; --trav >= run_ptr;) {      TYPE c;      c = v[trav];      int hi, lo;            for (hi = lo = trav; (lo -= 1) >= tmp_ptr; hi = lo)        v[hi] = v[lo];      v[hi] = c;    }      }    }  }  return 1;}int QSort(VECTOR_int & v, VECTOR_TYPE& x, int base_ptr, int total_elems){  int pivot_buffer;  TYPE pixot_buffer;    if (total_elems > MAX_THRESH) {        int lo = base_ptr;    int hi = lo + total_elems - 1;        stack_node stack[STACK_SIZE]; /* Largest size needed for 32-bit int!!! */    stack_node *top = stack + 1;        while (STACK_NOT_EMPTY) {      int left_ptr;      int right_ptr;      {    {      /* Select median value from among LO, MID, and HI. Rearrange         LO and HI so the three values are sorted. This lowers the          probability of picking a pathological pivot value and          skips a comparison for both the LEFT_PTR and RIGHT_PTR. */            int mid = lo + (hi - lo) / 2;            if (CMP (v[mid], v[lo])) {        swap_int (v[mid], v[lo]);        SWAP_TYPE (x[mid], x[lo]);      }      if (CMP (v[hi], v[mid])) {        swap_int (v[hi], v[mid]);        SWAP_TYPE (x[hi], x[mid]);      } else         goto jump_over;            if (CMP (v[mid], v[lo])) {        swap_int(v[mid], v[lo]);        SWAP_TYPE (x[mid], x[lo]);      }          jump_over:      pivot_buffer = v[mid];      pixot_buffer = x[mid];    }        left_ptr  = lo + 1;    right_ptr = hi - 1;        /* Here's the famous ``collapse the walls'' section of quicksort.         Gotta like those tight inner loops!  They are the main reason        that this algorithm runs much faster than others. */    do {      while (CMP (v[left_ptr], pivot_buffer))        left_ptr++;            while (CMP (pivot_buffer, v[right_ptr]))        right_ptr--;            if (left_ptr < right_ptr) {        swap_int (v[left_ptr], v[right_ptr]);        SWAP_TYPE (x[left_ptr], x[right_ptr]);        left_ptr++;        right_ptr--;      } else if (left_ptr == right_ptr) {        left_ptr ++;        right_ptr --;        break;      }    } while (left_ptr <= right_ptr);      }            /* Set up pointers for next iteration.  First determine whether     left and right partitions are below the threshold size. If so,      ignore one or both.  Otherwise, push the larger partition's     bounds on the stack and continue sorting the smaller one. */            if ((right_ptr - lo) <= MAX_THRESH) {    if ((hi - left_ptr) <= MAX_THRESH)      POP (lo, hi);     else      lo = left_ptr;      } else if ((hi - left_ptr) <= MAX_THRESH)    hi = right_ptr;      else if ((right_ptr - lo) > (hi - left_ptr)) {                       PUSH (lo, right_ptr);    lo = left_ptr;      } else {                       PUSH (left_ptr, hi);    hi = right_ptr;      }    }  }    /* Once the BASE_PTR array is partially sorted by quicksort the rest     is completely sorted using insertion sort, since this is efficient      for partitions below MAX_THRESH size. BASE_PTR points to the beginning      of the array to sort, and END_PTR points at the very last element in     the array (*not* one beyond it!). */  #define MIN(X,Y) ((X) < (Y) ? (X) : (Y))  {    int end_ptr = base_ptr + total_elems - 1;    int run_ptr;    int tmp_ptr = base_ptr;    int thresh = MIN (end_ptr, base_ptr + MAX_THRESH);        for (run_ptr = tmp_ptr + 1; run_ptr <= thresh; run_ptr++)      if (CMP (v[run_ptr], v[tmp_ptr]))    tmp_ptr = run_ptr;        if (tmp_ptr != base_ptr) {      swap_int(v[tmp_ptr], v[base_ptr]);      SWAP_TYPE (x[tmp_ptr], x[base_ptr]);    }        for (run_ptr = base_ptr + 1; (tmp_ptr = run_ptr += 1) <= end_ptr;) {            while (CMP (v[run_ptr], v[tmp_ptr -= 1]))    ;            if ((tmp_ptr += 1) != run_ptr) {    int trav;        for (trav = run_ptr + 1; --trav >= run_ptr;) {      int  c;      TYPE d;      c = v[trav];      d = x[trav];      int hi, lo;            for (hi = lo = trav; (lo -= 1) >= tmp_ptr; hi = lo) {        v[hi] = v[lo];        x[hi] = x[lo];      }      v[hi] = c;      x[hi] = d;    }      }    }  }  return 1;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美偷拍三级| 成人手机电影网| 成人在线综合网站| 欧美日韩中文字幕精品| 国产日产精品一区| 日韩综合小视频| 成人免费视频网站在线观看| 91精品久久久久久久99蜜桃 | 制服丝袜成人动漫| 日韩毛片一二三区| 国产一区二区三区电影在线观看 | 偷拍一区二区三区| 成人av免费网站| 精品久久久久久久人人人人传媒| 亚洲一区二区av在线| 不卡高清视频专区| 久久综合色婷婷| 精品在线视频一区| 欧美一级片在线| 亚洲成av人**亚洲成av**| 国产精品一卡二卡在线观看| 91久久精品国产91性色tv| 国产欧美1区2区3区| 国产一区二区视频在线播放| 91精品国产91久久久久久一区二区| 亚洲一区二区成人在线观看| 一本大道综合伊人精品热热| 中文字幕中文字幕在线一区 | 国产欧美一区二区精品性色超碰| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美日韩大陆一区二区| 亚洲国产日韩综合久久精品| 欧美日韩国产在线播放网站| 亚洲综合色成人| 欧美性色aⅴ视频一区日韩精品| 亚洲天堂2014| 在线观看免费亚洲| 午夜精品久久一牛影视| 欧美日韩成人一区| 免费成人美女在线观看.| 欧美男女性生活在线直播观看| 天天操天天干天天综合网| 欧美巨大另类极品videosbest| 亚洲va国产va欧美va观看| 91精品国产色综合久久ai换脸| 麻豆国产欧美日韩综合精品二区| 日韩精品中午字幕| 国产精品18久久久久久久久久久久| 久久精品欧美一区二区三区麻豆| 成人国产亚洲欧美成人综合网| 国产精品国产自产拍在线| 91在线丨porny丨国产| 一区二区三区蜜桃| 欧美日韩不卡一区二区| 久久精品国产99| 亚洲国产电影在线观看| 日本大香伊一区二区三区| 日韩va亚洲va欧美va久久| 久久久久国产成人精品亚洲午夜 | 韩国欧美一区二区| 中文乱码免费一区二区| 91久久精品日日躁夜夜躁欧美| 秋霞影院一区二区| 国产精品女主播av| 欧美日韩一级视频| 国产在线看一区| 伊人一区二区三区| 精品久久久久一区| 95精品视频在线| 日韩在线一区二区| 国产精品国产三级国产aⅴ中文| 欧美图片一区二区三区| 国产伦精一区二区三区| 一区二区三区免费在线观看| 欧美一区二区三区四区视频| 成人av资源站| 久久99久久久欧美国产| 亚洲啪啪综合av一区二区三区| 欧美一级视频精品观看| 91视频免费观看| 激情小说欧美图片| 亚洲午夜av在线| 国产精品素人视频| 欧美成人三级电影在线| 在线视频你懂得一区| 国产精品中文有码| 日日摸夜夜添夜夜添国产精品| 国产精品美女久久久久aⅴ国产馆| 91麻豆精品国产91久久久久久 | 亚洲成a人片在线不卡一二三区| 久久久久国产成人精品亚洲午夜| 69堂国产成人免费视频| 91一区二区三区在线观看| 国产精品一区二区久久精品爱涩| 日韩成人一级大片| 亚洲影视在线播放| 成人欧美一区二区三区| 国产日本亚洲高清| 精品国产污网站| 91精品国产一区二区三区| 色欧美片视频在线观看| 成人h动漫精品一区二区| 国产高清在线观看免费不卡| 久久精品国产精品亚洲精品| 午夜av电影一区| 尤物av一区二区| 亚洲欧美中日韩| 国产嫩草影院久久久久| 国产日产亚洲精品系列| 国产清纯美女被跳蛋高潮一区二区久久w| 91精品国产色综合久久ai换脸| 欧美日韩不卡一区| 欧美精品乱码久久久久久| 欧美日韩午夜影院| 欧美日本免费一区二区三区| 欧美三级电影在线看| 欧美日韩中文国产| 欧美色爱综合网| 91精品国产综合久久蜜臀| 91精品国产高清一区二区三区蜜臀| 欧美色综合久久| 欧美色网站导航| 欧美一三区三区四区免费在线看| 欧美精品xxxxbbbb| 日韩一区二区免费视频| 日韩一区二区在线播放| 欧美va亚洲va香蕉在线| 精品国产乱码久久| 亚洲国产精品ⅴa在线观看| 国产精品久久久久婷婷| 亚洲精品中文在线影院| 性欧美大战久久久久久久久| 日韩av一区二区三区| 久久精品国内一区二区三区| 国产专区欧美精品| eeuss鲁片一区二区三区| 在线免费不卡视频| 欧美一二三四区在线| 国产丝袜欧美中文另类| 亚洲精品国产品国语在线app| 亚洲高清免费观看| 另类小说图片综合网| 成人美女在线视频| 欧美探花视频资源| 精品电影一区二区| 中文字幕制服丝袜一区二区三区| 亚洲综合免费观看高清在线观看| 日韩精品免费视频人成| 国产精品一区2区| 在线国产电影不卡| 久久青草国产手机看片福利盒子 | 亚洲国产精品一区二区www在线| 日韩国产精品久久久| 国产a久久麻豆| 欧美视频日韩视频在线观看| 久久久午夜精品理论片中文字幕| 亚洲欧洲成人自拍| 久久成人免费日本黄色| 91免费视频网| 精品国产91亚洲一区二区三区婷婷| 中文字幕在线观看不卡| 青娱乐精品视频| 91福利视频久久久久| 久久久久久久久久久久久久久99| 樱桃视频在线观看一区| 国产精品99久| 在线不卡a资源高清| 国产精品电影一区二区三区| 美女一区二区三区| 欧美日韩卡一卡二| 日韩一区中文字幕| 国产高清精品网站| 日韩西西人体444www| 一区二区国产视频| 成人动漫一区二区三区| 精品国产三级a在线观看| 丝袜美腿亚洲一区| 在线视频一区二区三| 国产精品美女久久久久久久久| 久草中文综合在线| 欧美精选在线播放| 亚洲精品网站在线观看| 成人激情av网| 国产性色一区二区| 国内精品国产成人| 在线不卡免费av| 丝袜国产日韩另类美女| 欧美三级视频在线播放| 中文字幕欧美日韩一区| 国产精品亚洲一区二区三区妖精 | 91香蕉视频在线| 国产精品理论在线观看| 国产成人啪免费观看软件| 欧美精品一区在线观看| 精品在线观看视频| 日韩欧美亚洲国产精品字幕久久久 | 精品国产免费人成电影在线观看四季 | 国产成人av电影在线播放| 欧美xxxx老人做受| 国产精品一区在线观看你懂的|