<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="https://wikiti.brandonw.net/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wikiti.brandonw.net/index.php?action=history&amp;feed=atom&amp;title=Category%3AZ80_Routines%3AData%3AQuicksort</id>
		<title>Category:Z80 Routines:Data:Quicksort - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wikiti.brandonw.net/index.php?action=history&amp;feed=atom&amp;title=Category%3AZ80_Routines%3AData%3AQuicksort"/>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:Z80_Routines:Data:Quicksort&amp;action=history"/>
		<updated>2026-04-05T23:54:32Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.23.5</generator>

	<entry>
		<id>https://wikiti.brandonw.net/index.php?title=Category:Z80_Routines:Data:Quicksort&amp;diff=9276&amp;oldid=prev</id>
		<title>Galandros: created</title>
		<link rel="alternate" type="text/html" href="https://wikiti.brandonw.net/index.php?title=Category:Z80_Routines:Data:Quicksort&amp;diff=9276&amp;oldid=prev"/>
				<updated>2010-11-13T14:02:45Z</updated>
		
		<summary type="html">&lt;p&gt;created&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;[[Category:Z80 Routines:Sort|Quicksort]]&lt;br /&gt;
[[Category:Z80 Routines:Data|Quicksort]]&lt;br /&gt;
[[Category:Z80 Routines|Quicksort]]&lt;br /&gt;
&lt;br /&gt;
=== Description ===&lt;br /&gt;
This code snippet sorts a list using quicksort algorithm.&lt;br /&gt;
To know about this algorithm read [[http://en.wikipedia.org/wiki/Quicksort Quicksort in Wikipedia]]&lt;br /&gt;
&lt;br /&gt;
=== Code ===&lt;br /&gt;
&lt;br /&gt;
Note: sorts 1 byte numbers, it needs adaptation for real situation use.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
;&lt;br /&gt;
; &amp;gt;&amp;gt;&amp;gt; Quicksort routine v1.1 &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
; by Frank Yaul 7/14/04&lt;br /&gt;
;&lt;br /&gt;
; Usage: bc-&amp;gt;first, de-&amp;gt;last,&lt;br /&gt;
;        call qsort&lt;br /&gt;
; Destroys: abcdefhl&lt;br /&gt;
;&lt;br /&gt;
qsort:  ld      hl,0&lt;br /&gt;
        push    hl&lt;br /&gt;
qsloop: ld      h,b&lt;br /&gt;
        ld      l,c&lt;br /&gt;
        or      a&lt;br /&gt;
        sbc     hl,de&lt;br /&gt;
        jp      c,next1 ;loop until lo&amp;lt;hi&lt;br /&gt;
        pop     bc&lt;br /&gt;
        ld      a,b&lt;br /&gt;
        or      c&lt;br /&gt;
        ret     z       ;bottom of stack&lt;br /&gt;
        pop     de&lt;br /&gt;
        jp      qsloop&lt;br /&gt;
next1:  push    de      ;save hi,lo&lt;br /&gt;
        push    bc&lt;br /&gt;
        ld      a,(bc)  ;pivot&lt;br /&gt;
        ld      h,a&lt;br /&gt;
        dec     bc&lt;br /&gt;
        inc     de&lt;br /&gt;
fleft:  inc     bc      ;do i++ while cur&amp;lt;piv&lt;br /&gt;
        ld      a,(bc)&lt;br /&gt;
        cp      h&lt;br /&gt;
        jp      c,fleft&lt;br /&gt;
fright: dec     de      ;do i-- while cur&amp;gt;piv&lt;br /&gt;
        ld      a,(de)&lt;br /&gt;
        ld      l,a&lt;br /&gt;
        ld      a,h&lt;br /&gt;
        cp      l&lt;br /&gt;
        jp      c,fright&lt;br /&gt;
        push    hl      ;save pivot&lt;br /&gt;
        ld      h,d     ;exit if lo&amp;gt;hi&lt;br /&gt;
        ld      l,e&lt;br /&gt;
        or      a&lt;br /&gt;
        sbc     hl,bc&lt;br /&gt;
        jp      c,next2&lt;br /&gt;
        ld      a,(bc)  ;swap (bc),(de)&lt;br /&gt;
        ld      h,a&lt;br /&gt;
        ld      a,(de)&lt;br /&gt;
        ld      (bc),a&lt;br /&gt;
        ld      a,h&lt;br /&gt;
        ld      (de),a&lt;br /&gt;
        pop     hl      ;restore pivot&lt;br /&gt;
        jp      fleft&lt;br /&gt;
next2:  pop     hl      ;restore pivot&lt;br /&gt;
        pop     hl      ;pop lo&lt;br /&gt;
        push    bc      ;stack=left-hi&lt;br /&gt;
        ld      b,h&lt;br /&gt;
        ld      c,l     ;bc=lo,de=right&lt;br /&gt;
        jp      qsloop&lt;br /&gt;
;&lt;br /&gt;
; &amp;gt;&amp;gt;&amp;gt; end Quicksort &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
;&lt;br /&gt;
 &amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
source: [[http://frank_y.scripts.mit.edu/pages/z80qsort/]]&lt;/div&gt;</summary>
		<author><name>Galandros</name></author>	</entry>

	</feed>