{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,8,23]],"date-time":"2026-08-23T16:21:02Z","timestamp":1787502062229,"version":"build-2736575974"},"reference-count":28,"publisher":"Wiley","issue":"11","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":4746,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1993,11]]},"abstract":"<jats:title>Abstract<\/jats:title>\n                  <jats:p>We recount the history of a new qsortfunction for a C library. Our function is clearer, faster and more robust than existing sorts. It chooses partitioning elements by a new sampling scheme; it partitions by a novel solution to Dijkstra's Dutch National Flag problem; and it swaps efficiently. Its behavior was assessed with timing and debugging testbeds, and with a program to certify performance. The design techniques apply in domains beyond sorting.<\/jats:p>","DOI":"10.1002\/spe.4380231105","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T15:18:09Z","timestamp":1163776689000},"page":"1249-1265","source":"Crossref","is-referenced-by-count":109,"title":["Engineering a sort function"],"prefix":"10.1002","volume":"23","author":[{"given":"Jon L.","family":"Bentley","sequence":"first","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]},{"given":"M. Douglas","family":"McIlroy","sequence":"additional","affiliation":[],"role":[{"vocabulary":"crossref","role":"author"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"key":"e_1_2_1_2_2","doi-asserted-by":"publisher","DOI":"10.1093\/comjnl\/5.1.10"},{"key":"e_1_2_1_3_2","doi-asserted-by":"publisher","DOI":"10.1145\/365660.365678"},{"key":"e_1_2_1_4_2","volume-title":"UNIX Programmer's Manual","author":"Kernighan B. W.","year":"1979"},{"key":"e_1_2_1_4_3","volume-title":"UNIX Programmer's Manual","year":"1983"},{"issue":"2","key":"e_1_2_1_5_2","first-page":"85","article-title":"Software exploratorium: the trouble with qsort","volume":"10","author":"Bentley J. L.","year":"1992","journal-title":"UNIX Review"},{"issue":"8","key":"e_1_2_1_6_2","first-page":"71","article-title":"Software exploratorium: history of a heapsort","volume":"10","author":"Bentley J. L.","year":"1992","journal-title":"UNIX Review"},{"key":"e_1_2_1_7_2","unstructured":"American National Standards Institute American National Standard for Information Systems\u2014Programming Language\u2014C ANSI X3.159\u20131989 New York (1979)."},{"key":"e_1_2_1_8_2","unstructured":"R.Sedgewick \u2018Quicksort\u2019 PhD Thesis Stanford University (1975)."},{"key":"e_1_2_1_9_2","doi-asserted-by":"publisher","DOI":"10.1145\/359619.359631"},{"key":"e_1_2_1_10_2","doi-asserted-by":"publisher","DOI":"10.1137\/0206018"},{"key":"e_1_2_1_11_2","doi-asserted-by":"publisher","DOI":"10.1007\/BF00289467"},{"key":"e_1_2_1_12_2","volume-title":"Algorithms in C","author":"Sedgewick R.","year":"1990"},{"key":"e_1_2_1_13_2","volume-title":"The Art of Computer Programming, volume 3: Sorting and Searching","author":"Knuth D. E.","year":"1975"},{"key":"e_1_2_1_14_2","first-page":"283","article-title":"Bibliography 26: computer sorting","volume":"13","author":"Rivest R. L.","year":"1972","journal-title":"Computing Reviews"},{"key":"e_1_2_1_15_2","volume-title":"Programming Pearls","author":"Bentley J. L.","year":"1986"},{"key":"e_1_2_1_16_2","doi-asserted-by":"publisher","DOI":"10.1145\/356635.356640"},{"issue":"2","key":"e_1_2_1_17_2","first-page":"38","article-title":"An elementary C cost model","volume":"9","author":"Bentley J. L.","year":"1991","journal-title":"UNIX Review"},{"key":"e_1_2_1_18_2","doi-asserted-by":"publisher","DOI":"10.1145\/122616.122621"},{"key":"e_1_2_1_19_2","first-page":"1827","article-title":"Theory and practice in the construction of a working sort routine","volume":"63","author":"Linderman J. P.","year":"1984","journal-title":"Bell System Technical Journal"},{"key":"e_1_2_1_20_2","doi-asserted-by":"publisher","DOI":"10.1145\/362875.362901"},{"key":"e_1_2_1_21_2","unstructured":"B. W.Weide \u2018Space\u2010efficient on\u2010line selection algorithms\u2019 Computer Science and Statistics: Eleventh Annual Symposium on the Interface (1978) pp.308\u2013312."},{"key":"e_1_2_1_22_2","unstructured":"P.McIlroy \u2018Optimistic sorting and information theoretic complexity\u2019 Proceedings of the Fourth Annual ACM\u2010SIAM Symposium on Discrete Algorithms Austin (1993) pp.467\u2013474."},{"key":"e_1_2_1_23_2","doi-asserted-by":"publisher","DOI":"10.1007\/3-540-55706-7_38"},{"key":"e_1_2_1_24_2","volume-title":"A Discipline of Programming","author":"Dijkstra E. W.","year":"1976"},{"key":"e_1_2_1_25_2","doi-asserted-by":"publisher","DOI":"10.1109\/TC.1985.5009387"},{"key":"e_1_2_1_26_2","volume-title":"Algorithms + Data Structures = Programs","author":"Wirth N.","year":"1976"},{"key":"e_1_2_1_27_2","doi-asserted-by":"publisher","DOI":"10.1002\/spe.4380190702"},{"key":"e_1_2_1_28_2","doi-asserted-by":"publisher","DOI":"10.1145\/355666.355671"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380231105","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380231105","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2023,10,24]],"date-time":"2023-10-24T15:30:05Z","timestamp":1698161405000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380231105"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1993,11]]},"references-count":28,"journal-issue":{"issue":"11","published-print":{"date-parts":[[1993,11]]}},"alternative-id":["10.1002\/spe.4380231105"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380231105","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"value":"0038-0644","type":"print"},{"value":"1097-024X","type":"electronic"}],"subject":[],"published":{"date-parts":[[1993,11]]}}}