 # coding: cp852
import os,sys


#---============================[ bubble_sort ]==========================================[]
def select_sort(T):
  '''Sortowanie przez wyb¢r.'''
  def indexMin(T):
    '''Zwraca indeks najmniejszego elementu w li˜cie. Wersja kr¢tka.'''
    m=min(T)							# Zapami©tujewarto˜† minimum z listy T.
    I=T.index(m)						# Zapami©tuje pierwsze poˆo¾enie minimum w li˜cie.
    return I							# Po zakoäczeniu I wskazuje pozycje minimum i jest zwracane jako wynik.

  # --- vvv --- napisuje poprzedni¥ funkcj©.
  def indexMin(T):
    '''Zwraca indeks najmniejszego elementu w li˜cie.'''
    m=T[0]  							# Zakˆada, ¾e pierwszy element listy jest najmniejszy.
    I=0								# I notuje to.
    for i,x in enumerate(T):					# Dla ponumerowanych kolejnych element¢w listy.
      if x<m:							# Je˜li element jest nmniejszy od dotychczasowego minimum. (Jest to nowe minimum).
        m=x							# Zapamietuje jego warto˜c jako minimum.
        I=i							# I notuje jego pozycj©.
    return I							# Po zakoäczeniu I wskazuje pozycje minimum i jest zwracane jako wynik.

  for i in range(len(T)):               			# Dla kolejnych element¢w listy.
    j=indexMin(T[i:])						# Znajduje indeks najmniejszego elementu koäc¢wki listy.
#    print(f'{j=}')
    j+=i          						# Ustala bezwzgl©dne poˆo¾enie minimum.
#    print(f' {i=} {j=} {T}')
    (T[i],T[j])=(T[j],T[i])					# Przenosi najmniejszy na pocz¥tek.
#    print(f' {T}')
   
  return T							# Zwraca posortowan¥ list©.

#---============================[ __name__ ]==========================================[]
if __name__=="__main__":					# ½eby wykonywaˆo sie tylko, kiedy jest testowane= wywoˆane bepo˜rednio. W wywoˆaniu jako biblioteki - mija to.
  L1=[5,4,6,2,33,5,22,28,55,5,37,39,49,57]
  print(f'Przed sortowaniem {L1=}')
  L2=select_sort(L1)
  print(f'Po sortowaniu {L2=}')



