
Sorting Algorithm

This is a sorting algorithm.   It may be applied to a set of data in order to sort it.    
For comparing various sorts, see compare sorts.  
For other sorting algorithms,   see sorting algorithms,   or:

O(n logn) sorts
Heap sort |
Merge sort |
Patience sort |
Quick sort
O(n log2n) sorts
Shell Sort
O(n2) sorts
Bubble sort |
Cocktail sort |
Cocktail sort with shifting bounds |
Comb sort |
Cycle sort |
Gnome sort |
Insertion sort |
Selection sort |
Strand sort
other sorts
Bead sort |
Bogo sort |
Common sorted list |
Composite structures sort |
Custom comparator sort |
Counting sort |
Disjoint sublist sort |
External sort |
Jort sort |
Lexicographical sort |
Natural sorting |
Order by pair comparisons |
Order disjoint list items |
Order two numerical lists |
Object identifier (OID) sort |
Pancake sort |
Quickselect |
Permutation sort |
Radix sort |
Ranking methods |
Remove duplicate elements |
Sleep sort |
Stooge sort |
[Sort letters of a string] |
Three variable sort |
Topological sort |
Tree sort


Task

Given an integer   n,   return   1──►n   (inclusive)   in lexicographical order.



Show all output here on this page.



Example

Given   13,

return:   [1,10,11,12,13,2,3,4,5,6,7,8,9].

/*REXX pgm displays a horizontal list of a  range of numbers  sorted  lexicographically.*/
parse arg LO HI INC .                            /*obtain optional arguments from the CL*/
if  LO=='' |  LO==","  then  LO=  1              /*Not specified?  Then use the default.*/
if  HI=='' |  HI==","  then  HI= 13              /* "      "         "   "   "     "    */
if INC=='' | INC==","  then INC=  1              /* "      "         "   "   "     "    */
#= 0                                             /*for actual sort, start array with  1.*/
                  do j=LO  to  HI  by  INC       /*construct an array from  LO   to  HI.*/
                  #= # + 1;        @.#= j / 1    /*bump counter;  define array element. */
                  end   /*j*/                    /* [↑]  Also, normalize the element #. */
call Lsort #                                     /*sort numeric array with a simple sort*/
$=                                               /*initialize a horizontal numeric list.*/
                  do k=1  for  #;    $= $','@.k  /*construct      "         "      "    */
                  end   /*k*/                    /* [↑]  prefix each number with a comma*/
                                                 /* [↓]  display a continued  SAY  text.*/
say 'for   '  LO"──►"HI     ' by '     INC     " (inclusive), "         # ,
                                               ' elements sorted lexicographically:'
say  '['strip($, "L", ',')"]"                    /*strip leading comma, bracket the list*/
exit                                             /*stick a fork in it,  we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
Lsort: procedure expose @.; parse arg n;  m= n-1 /*N: is the number of @ array elements.*/
       do m=m  by -1  until ok;          ok= 1   /*keep sorting the  @ array until done.*/
          do j=1  for m;  k= j+1;  if @.j>>@.k  then parse value @.j @.k 0 with @.k @.j ok
          end   /*j*/                            /* [↑]  swap 2 elements, flag as ¬done.*/
       end      /*m*/;    return