{"id":2586,"date":"2018-01-18T22:05:31","date_gmt":"2018-01-18T13:05:31","guid":{"rendered":"http:\/\/zob.club\/zob\/?page_id=2586"},"modified":"2018-01-18T22:05:47","modified_gmt":"2018-01-18T13:05:47","slug":"list1","status":"publish","type":"page","link":"http:\/\/zob.club\/zob\/sd\/sd201802\/list1\/","title":{"rendered":"LIST 1 (\u5358\u7d14\u633f\u5165\u30bd\u30fc\u30c8)"},"content":{"rendered":"<pre>\r\n\/*------------------------------------------------------------------\r\n        SORT 1   insert sort\r\n--------------------------------------------------------------------*\/\r\n#include &lt;stdio.h&gt;\r\n#include &lt;stdlib.h&gt;\r\n#include &lt;string.h&gt;\r\n\r\n#define MAX_MEM   65535U\r\n#define MAX_LINE  32767U\r\n\r\nint loffset = 0;\r\nunsigned short fsize,lcount = 0;\r\nunsigned short *lp;\r\nunsigned char *fbuff;\r\n\r\n\/*--- insert sort ---*\/\r\nvoid inssort(unsigned short *lp,int lower,int upper)\r\n{\r\n    int i,j;\r\n    unsigned short tmpp;\r\n\r\n    for (i = lower+1; i &lt;= upper; i++) {\r\n        tmpp = lp[i];\r\n        for (j=i-1;j&gt;=lower &amp;&amp; strcmp(fbuff+tmpp,fbuff+lp[j])&lt;0;j--)\r\n            lp[j + 1] = lp[j];\r\n        lp[j + 1] = tmpp;\r\n    }\r\n}\r\n\r\nvoid read_data(FILE *fp)\r\n{\r\n    int llen, i = 0;\r\n    unsigned short txtp = 0;\r\n    unsigned char *tp;\r\n\r\n    *fbuff++ = '\\0';\r\n    \r\n    fsize = fread(fbuff,1,MAX_MEM-2,fp);\r\n    fclose(fp);\r\n    \r\n    while (fsize &gt; txtp) {\r\n        lp[i++] = txtp;\r\n        tp = strchr(fbuff+txtp,'\\n');\r\n        *tp = '\\0';\r\n        txtp =(unsigned short)(tp - fbuff)+1;\r\n        lcount++;\r\n    }\r\n    lp[i++] = txtp;\r\n\r\n    if (loffset &gt; 0) {\r\n        loffset--;\r\n        for (i = 0; i &lt; lcount; i++) {\r\n            llen = lp[i+1] - lp[i] - 2;\r\n            if (llen &lt; loffset) lp[i] = lp[i+1]-2;\r\n            else lp[i] += loffset;\r\n        }\r\n    }\r\n}\r\n\r\nvoid write_data(int reverse)\r\n{\r\n    int i;\r\n    unsigned char *fpp;\r\n\r\n    if (reverse)\r\n        if (loffset &gt; 0)\r\n            for (i = lcount-1; i &gt;=0; i--) {\r\n                fpp = fbuff + lp[i] - 1;\r\n                while (*fpp-- != '\\0');\r\n                fputs(fpp+2,stdout);\r\n                fputc('\\n',stdout);\r\n            }   \r\n        else\r\n            for (i = lcount-1; i &gt;=0; i--) {\r\n                fputs(fbuff+lp[i],stdout);\r\n                fputc('\\n',stdout);\r\n            }\r\n    else\r\n        if (loffset &gt; 0)\r\n            for (i = 0; i &lt; lcount; i++) {\r\n                fpp = fbuff + lp[i] - 1;\r\n                while (*fpp-- != '\\0');\r\n                fputs(fpp+2,stdout);\r\n                fputc('\\n',stdout);\r\n            }\r\n        else\r\n            for (i = 0; i &lt; lcount; i++) {\r\n                fputs(fbuff+lp[i],stdout);\r\n                fputc('\\n',stdout);\r\n            }\r\n}\r\n\r\nint main(int argc,char *argv[])\r\n{\r\n    int i, reverse = 0;\r\n    FILE *fp;\r\n\r\n\/*--- get parameter ---*\/\r\n    if (argc &gt; 4) {\r\n        fputs(&quot;Usage: hayasort [\/R] [\/+n] [filename]\\n&quot;,stderr);\r\n        exit(1);\r\n    }\r\n\r\n    fp = stdin;\r\n    for (i = 1; i &lt; argc; i++) {\r\n        if (argv[i][0]=='-' || argv[i][0]=='\/') {\r\n            if (argv[i][1]=='+') loffset = atoi(argv[i]+2);\r\n            else if (argv[i][1]=='r' || argv[i][1]=='R') reverse = 1;\r\n        } else\r\n            if ((fp = fopen(argv[i],&quot;rt&quot;)) == NULL) {\r\n                fputs(&quot;File not found\\n&quot;,stderr);\r\n                exit(1);\r\n            }\r\n    }\r\n\r\n\/*--- alloc memory ----*\/\r\n    fbuff = (unsigned char *)malloc(MAX_MEM);\r\n    lp = (unsigned short *)malloc(MAX_LINE);\r\n\r\n\/*--- read data ----*\/\r\n    read_data(fp);\r\n\r\n\/*--- sort ---------*\/\r\n    inssort(lp,0,lcount - 1);\r\n\r\n\/*--- write data ---*\/\r\n    write_data(reverse);\r\n\r\n    free(fbuff);\r\n    free(lp);\r\n    return 0;\r\n\r\n}\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>\/*&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; SORT 1 insert sort &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":2200,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"_links":{"self":[{"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/pages\/2586"}],"collection":[{"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/comments?post=2586"}],"version-history":[{"count":1,"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/pages\/2586\/revisions"}],"predecessor-version":[{"id":2587,"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/pages\/2586\/revisions\/2587"}],"up":[{"embeddable":true,"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/pages\/2200"}],"wp:attachment":[{"href":"http:\/\/zob.club\/zob\/wp-json\/wp\/v2\/media?parent=2586"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}