home *** CD-ROM | disk | FTP | other *** search
-
-
- Note to BDS C Users Who Use the "qsort" Library Function:
- (From Leor Zolman, Feb 1982)
-
-
- The low-level swap function that qsort uses, called "_swp", is pretty
- inefficient. A version that works much more quickly is given below, but
- note that this method necessarily requires that some upper maximum be set
- on the size ("width") of a single object of the class being sorted. The
- new _swp function is as follows:
-
-
- -------------------------------------------------------------------------------
- #define MAX_WIDTH 1000 /* largest allowable width */
-
- _swp(width, a, b);
- {
- char swapbuf[MAX_WIDTH];
- movmem(a,swapbuf,width); /* simply swap through the temporary */
- movmem(b,a,width); /* buffer allocated on the stack */
- movmem(swapbuf,b,width);
- }
-
- -------------------------------------------------------------------------------
- To install this modification, replace the _swp function in STDLIB1.C with
- this version, recompile STDLIB1.C, and use the librarian (CLIB) to delete
- the old version of "_swp" in DEFF.CRL and replace it with the new one from
- STDLIB1.CRL. And make sure that the MAX_WIDTH define is set so that you're
- never likely to want to sort object of larger size. If you DO, remember to
- go back and change the define....
- -leor
-