⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sort.cc

📁 clique code with sample data set. clique is a data clustering algorithm which follows hierarchical c
💻 CC
字号:
#include <errno.h>#include <iostream.h>#include <malloc.h>#include <stdio.h>#include <fstream.h>#include <strstream.h>#include <stdlib.h>#include <fcntl.h>#include <sys/stat.h>#include <unistd.h>#include <math.h>#include <string.h>char freqf[300];const int lineSize=1024;const int wdSize=256;class Itemset{private:   int *iary;   int sz;   int sup;public:   Itemset(int sze, int sp){ sz = sze; sup = sp; iary = new int[sz]; }   ~Itemset(){ delete [] iary; }   int size(){ return sz; }   int *iset(){ return iary; }   int& operator [] (unsigned int index){ return iary[index]; }      friend ostream& operator << (ostream& fout, Itemset& iset);};ostream& operator << (ostream& fout, Itemset& iset){   for (int i=0; i < iset.sz; i++)      fout << iset.iary[i] << " ";   fout << "- " << iset.sup << endl;   return fout;}Itemset **isetary;int isettotsz=1000;int isetarysz=0;int cmpiset(const void *a, const void *b){   Itemset *ia = *(Itemset **)a;   Itemset *ib = *(Itemset **)b;   if (ia->size() > ib->size()) return 1;   else if (ia->size() < ib->size()) return -1;      for (int i=0; i < ia->size() && i < ib->size(); i++){      if ((*ia)[i] > (*ib)[i]) return 1;      else if ((*ia)[i] < (*ib)[i]) return -1;   }   //   if (ia->size() > ib->size()) return 1;   //else if (ia->size() < ib->size()) return -1;   return 0;}int cmpint(const void *a, const void *b){   int ia = *(int *)a;   int ib = *(int *)b;   if (ia > ib) return 1;   else if (ia < ib) return -1;   else return 0;} void getitemset(char *inBuf, int inSize){   char inStr[wdSize];   static int tmpary[1000];   int tmpsz;      int it, sup;   istrstream ist(inBuf, inSize);   if (inBuf[0] != '0' &&        inBuf[0] != '1' &&       inBuf[0] != '2' &&       inBuf[0] != '3' &&       inBuf[0] != '4' &&       inBuf[0] != '5' &&       inBuf[0] != '6' &&       inBuf[0] != '7' &&       inBuf[0] != '8' &&       inBuf[0] != '9'){      cout << inBuf << endl;      return;   }         // it is a digit, i.e., start of itemset   tmpsz = 0;   while(ist >> inStr){      if (strcmp(inStr, "-") == 0){         ist >> inStr;         sup = atoi(inStr);      }      else{         it = atoi(inStr);         tmpary[tmpsz++] = it;      }                  //it = atoi(inStr);      //cout << it << endl;      //tmpary[tmpsz++] = it;   }      Itemset *fit = new Itemset(tmpsz,sup);   for (int i=0; i < tmpsz; i++)      (*fit)[i] = tmpary[i];   //cout << "BEFORE " << *fit;   qsort(fit->iset(), fit->size(), sizeof(int), cmpint);   cout << *fit;   if (isetarysz+1 > isettotsz){      isettotsz = 2*isettotsz;      isetary = (Itemset **) realloc(isetary, isettotsz*sizeof(Itemset *));   }   isetary[isetarysz++] = fit;}int main(int argc, char **argv){   int i;      sprintf(freqf,"%s", argv[1]);      isetary = (Itemset **) malloc (sizeof(Itemset*)*isettotsz);      char inBuf[lineSize];   int inSize;      ifstream fin(freqf, ios::in);   if (!fin){      perror("cannot open freq seq file");      exit(errno);   }   while(fin.getline(inBuf, lineSize)){      inSize = fin.gcount();      getitemset(inBuf, inSize);   }      cerr << "\n\n<<<<<<<<<<<<<< COMPLETE SORT <<<<<<<<<<<<<<<<<<<<<<<<<<\n";   isetary = (Itemset **) realloc(isetary, isetarysz*sizeof(Itemset *));      qsort(isetary, isetarysz, sizeof(Itemset *), cmpiset);      for (i=0; i < isetarysz; i++)      cerr << *isetary[i];}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -