Advertisement
Guest User

Sel_sort

a guest
Oct 31st, 2014
185
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Eiffel 1.56 KB | None | 0 0
  1. note
  2.     description: "Summary description for {SELECTION_SORT}."
  3.     author: ""
  4.     date: "$Date$"
  5.     revision: "$Revision$"
  6.  
  7. class
  8.     SELECTION_SORT
  9.  
  10.  
  11.  
  12. feature
  13. index_of_min(ar: ARRAY [INTEGER]; lower: INTEGER):INTEGER
  14.         --find index of smallest element in ar in the range of lower and the max index.
  15.         require
  16.             lower_positiv : lower >=1
  17.             lower_in_range: lower <= ar.count
  18.             ar_not_void: ar/= Void
  19.         local
  20.                 i, min, index: INTEGER
  21.         do
  22.                 from
  23.                         i:=lower
  24.                         min := ar.item (i)
  25.                         index := i
  26.                 until
  27.                         i+1 > ar.count
  28.                 loop
  29.                         if  ar.item(i+1) < min then
  30.                                 min := ar.item(i+1)
  31.                                 index := i+1
  32.                         end
  33.                         i := i + 1
  34.                 end
  35.                  Result := index
  36.         ensure
  37.             result_is_set: Result /= Void
  38.         end
  39.  
  40.  
  41. selectionsort (ar: ARRAY [INTEGER]):ARRAY[INTEGER]
  42.                 -- sort Array x with selectionsort
  43.         require
  44.             ar_not_void: ar/=VOID
  45.         local
  46.             i: INTEGER
  47.             min_index: INTEGER
  48.             ith: INTEGER
  49.         do
  50.             from
  51.                 i:=1
  52.             until
  53.                 i= ar.count
  54.             loop
  55.                 min_index := index_of_min(ar,i)
  56.                 ith:=ar[i]
  57.                 ar[i]:= ar[min_index]
  58.                 ar[min_index]:=ith
  59.                 i:= i+1
  60.             end
  61.             Result:= ar
  62.         ensure
  63.             Result_is_set: Result /= Void
  64.         end
  65. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement