Re: stable sorting for Juergen Luethje
- Posted by Bernie Ryan <xotron at bluefrognet.net> Feb 28, 2003
- 404 views
Juergen: This is will work. Bernie -------------------==--------------------==------------------------ include sort.e constant statistics = { {"Doe", 3}, {"Einstein", 1}, {"Goldberg", 1}, {"Irving", 4}, {"Jones", 3}, {"Miller", 2}, {"Neuman", 2}, {"Petersen", 4}, {"Smith", 2}, {"Zander", 5} } -- sequence temp, sorted temp = repeat({0,0}, length(statistics)) -- integer field integer by_field object Obj -- function compare_field(sequence a, sequence b) -- Compare two sequences (records) according to field. return compare(a[field],b[field]) end function -- set routine id by_field = routine_id("compare_field") -- -- do custom sort on first field field = 1 sorted = custom_sort(by_field,statistics) -- puts(1, "sorted by name\n") for i = 1 to length(sorted) do printf(1, "%12s %d\n", sorted[i]) end for if getc(0) then end if -- swap field 1 and 2 for i = 1 to length(sorted) do Obj = sorted[i][1] temp[i][1] = sorted[i][2] temp[i][2] = Obj end for -- do sort on complete record sorted = sort(temp) -- swap field 1 and 2 back to normal for i = 1 to length(sorted) do Obj = sorted[i][1] temp[i][1] = sorted[i][2] temp[i][2] = Obj end for -- puts(1, "\nsorted by mark\n") for i = 1 to length(temp) do printf(1, "%12s %d\n", temp[i]) end for if getc(0) then end if -- -------------------==--------------------==---------------------------