b'\n_START_ARTICLE_\nShellovo urejanje\n_START_SECTION_\nDelovanje\n_START_PARAGRAPH_\nAlgoritem za hitrej\xc5\xa1e urejanje izrablja to, da urejanje z navadnim vstavljanjem, skoraj urejena zaporedja uredi v \xc4\x8dasu O(n). Za delovanje potrebujemo delilno zaporedje(angle\xc5\xa1ko gap sequence), ki pove v katerih stopnjah bomo urejali. \xc4\x8ce izberemo delilno zaporedje (1, 3, 7), bomo najprej uredili podtabele z vsakim sedmim indeksom v tabeli (podtabela1: 0, 7, 14, ...|podtabela2: 1, 8, 15, ...|podtabela3: 2, 9, 16, ...|...), nato podtabele z vsakim tretjim indeksom (podtabela1: 0, 3, 6, ...|podtabela2: 1, 4, 7, ...|...), na koncu pa urejamo vse elemente. Ta stopnja je popolnoma enaka urejanju z navadnim vstavljanjem.\n_START_SECTION_\nZahtevnost\n_START_PARAGRAPH_\n\xc4\x8casovna zahtevnost algoritma je odvisna od delilnega zaporedja in za povpre\xc4\x8dni primer ni znana, je pa navzgor omejena z O(n^2). Prostorska zahtevnost je O(1), saj urejamo na mestu.\n_START_SECTION_\nPsevdokoda\n_START_PARAGRAPH_\nfor(p = length(gap)-1; p >= 0; p--) {_NEWLINE_    for(i = 0; i < length(tabela)-1; i++) {_NEWLINE_      j = i+gap[p];_NEWLINE__NEWLINE_      while((j >= gap[p])&&(j < length(tabela))&&(tabela[j] < tabela[j-gap[p]])) {_NEWLINE_        zamenjaj(tabela[j], tabela[j-gap[p]]);_NEWLINE_        j-=gap[p];_NEWLINE_      }_NEWLINE_    }_NEWLINE_  }'