Learning to understand selection sort

TrustyTony

By coding algorithm and using some liberal prints with small set of data, you can learn to understand the basic algorithms better than just reading about them.

Here simple selection sort.

180 Views
About the Author

IT Pro doing Eng-Fin-Eng translations

""" demonstrating simple selection sort with prints"""

data = [64, 25, 12, 25, 22, 11, 62]

for current in range(len(data)-1):
    min_value_index = current
    print('Sorted: %s, Checking: %s' % (data[:current],data[current:]))
    for index, d in enumerate(data[current:], current):
        if data[min_value_index] > d:
            min_value_index = index
    if min_value_index != current:
        data[current], data[min_value_index] = data[min_value_index], data[current]
    else:
        print('No swap needed')

print('\nReady result:')
print(data)
TrustyTony 888 pyMod Team Colleague Featured Poster

OK, if you put one print more you can find a stupid thing I do. Up vote for first one to spot it.

TrustyTony 888 pyMod Team Colleague Featured Poster
""" demonstrating simple selection sort with prints"""

data = [64, 25, 12, 25, 22, 11, 62]

for current in range(len(data)-1):
    min_value_index = current
    print('Sorted: %s, Checking: %s' % (data[:current],data[current:]))
    # min_value_index = current, does not need to check that -> + 1
    for index, d in enumerate(data[current + 1:], current + 1):
        #print(index, min_value_index)
        if data[min_value_index] > d:
            min_value_index = index
    if min_value_index != current:
        data[current], data[min_value_index] = data[min_value_index], data[current]
    else:
        print('No swap needed')

print('\nReady result:')
print(data)
Be a part of the DaniWeb community

We're a friendly, industry-focused community of 1.20 million developers, IT pros, digital marketers, and technology enthusiasts learning and sharing knowledge.