• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 7, comments - 13, trackbacks - 0, articles - 37
               :: 首頁 :: 新隨筆 :: 聯(lián)系 ::  :: 管理

            qsort函數(shù)詳細

            Posted on 2008-08-16 15:29 歲月流逝 閱讀(370) 評論(0)  編輯 收藏 引用
            一、對int類型數(shù)組排序

            int num[100];

            Sample:

            int cmp ( const void *a , const void *b )
            {
            return *(int *)a - *(int *)b;
            }

            qsort(num,100,sizeof(num[0]),cmp);

            二、對char類型數(shù)組排序(同int類型)

            char word[100];

            Sample:

            int cmp( const void *a , const void *b )
            {
            return *(char *)a - *(int *)b;
            }

            qsort(word,100,sizeof(word[0]),cmp);

            三、對double類型數(shù)組排序(特別要注意)

            double in[100];

            int cmp( const void *a , const void *b )
            {
            return *(double *)a > *(double *)b ? 1 : -1;
            }

            qsort(in,100,sizeof(in[0]),cmp);

            四、對結(jié)構(gòu)體一級排序

            struct In
            {
            double data;
            int other;
            }s[100]

            //按照data的值從小到大將結(jié)構(gòu)體排序,關(guān)于結(jié)構(gòu)體內(nèi)的排序關(guān)鍵數(shù)據(jù)data的類型可以很多種,參考上面的例子寫

            int cmp( const void *a ,const void *b)
            {
            return ((In *)a)->data > ((In *)b)->data ? 1 : -1;
            }

            qsort(s,100,sizeof(s[0]),cmp);

            五、對結(jié)構(gòu)體二級排序

            struct In
            {
            int x;
            int y;
            }s[100];

            //按照x從小到大排序,當(dāng)x相等時按照y從大到小排序

            int cmp( const void *a , const void *b )
            {
            struct In *c = (In *)a;
            struct In *d = (In *)b;
            if(c->x != d->x) return c->x - d->x;
            else return d->y - c->y;
            }

            qsort(s,100,sizeof(s[0]),cmp);

            六、對字符串進行排序

            struct In
            {
            int data;
            char str[100];
            }s[100];

            //按照結(jié)構(gòu)體中字符串str的字典順序排序

            int cmp ( const void *a , const void *b )
            {
            return strcmp( (*(In *)a)->str , (*(In *)b)->str );
            }

            qsort(s,100,sizeof(s[0]),cmp);
            功 能: 使用快速排序例程進行排序
            用 法: void qsort(void *base, int nelem, int width, int (*fcmp)(const void *,const void *));
            各參數(shù):1 待排序數(shù)組首地址 2 數(shù)組中待排序元素數(shù)量 3 各元素的占用空間大小 4 指向函數(shù)的指針,用于確定排序的順序
            程序例:
            #include <iostream>
            using namespace std;
            #include <stdlib.h>
            #include <string.h>
            int compare( const void *a, const void *b);
            char * list[5]= {"cat","car","cab","cap","can"};
            int main()


            pascal 例程
            program quicksort;
            const
            {$ifndef MACOS}
            max = 100000;
            {$else}
            max = 1000; {Actually it works with 100000 also, but that might }
            {lead problems occacionally.}
            {$endif}
            type
            tlist = array[1..max] of longint;
            var
            data : tlist;

            procedure qsort(var a : tlist);
            procedure sort(l,r: longint);
            var
            i,j,x,y: longint;
            begin
            i:=l;
            j:=r;
            x:=a[(l+r) div 2];
            repeat
            while a<x do
            inc(i);
            while x<a[j] do
            dec(j);
            if not(i>j) then
            begin
            y:=a;
            a:=a[j];
            a[j]:=y;
            inc(i);
            j:=j-1;
            end;
            until i>j;
            if l<j then
            sort(l,j);
            if i<r then
            sort(i,r);
            end;
            begin
            sort(1,max);
            end;
            var
            i : longint;
            begin
            write('Creating ',Max,' random numbers between 1 and 500000');
            randomize;
            for i:=1 to max do
            data:=random(500000);
            writeln;
            writeln('Sorting...');
            qsort(data);
            writeln;
            for i:=1 to max do
            begin
            write(data:7);
            if (i mod 10)=0 then
            writeln;
            end;
            end.
            {
            int x;
            qsort((void *)list,5,sizeof(list[0]),compare);
            for (x=0;x<5;x++)
            cout<<list[x]<<endl;
            return 0;
            }
            int compare(const void *a,const void *b)
            {
            return(strcmp(*(char**)a,*(char**)b));
            }





            只有注冊用戶登錄后才能發(fā)表評論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


            国产aⅴ激情无码久久| 久久99精品久久久久久动态图| 国内精品久久久久久久久电影网| 国产综合精品久久亚洲| 日本高清无卡码一区二区久久| 热99RE久久精品这里都是精品免费 | 国产亚洲美女精品久久久2020| 亚洲αv久久久噜噜噜噜噜| 久久久国产精品福利免费| 欧美成a人片免费看久久| 狠狠色丁香久久婷婷综合五月| 思思久久99热免费精品6| 精品午夜久久福利大片| 777午夜精品久久av蜜臀| 久久久久久毛片免费看| 久久久久久久综合日本亚洲| 亚洲精品美女久久777777| 久久久久国产一区二区三区| 国产午夜精品久久久久免费视| 三级韩国一区久久二区综合| 国产999精品久久久久久| 久久99精品久久久久婷婷| 狠狠色综合网站久久久久久久高清 | 久久无码AV一区二区三区| 国产亚洲色婷婷久久99精品91| 亚洲人成伊人成综合网久久久| 久久一本综合| 久久精品国产第一区二区| 日本免费久久久久久久网站| 久久精品国产亚洲精品2020| 伊人久久五月天| 久久久久久久免费视频| 久久最新免费视频| 91亚洲国产成人久久精品网址| 91精品国产高清91久久久久久| 久久久精品国产免大香伊 | 久久亚洲精品国产精品婷婷| 久久久久国产亚洲AV麻豆| 成人久久精品一区二区三区| 久久久一本精品99久久精品88 | 久久婷婷五月综合色奶水99啪|