小白自学python

  1. 想随机生成20个100以内的数字以后按照从小到大的顺序排列,不用max\min\sorted函数,而是用X[0]先把最小值储存起来放在第一个位置,X[1]先把第二小的值储存起来放在第二个位置,依次排下来,请问应该如何写代码
>>> import random
>>> arr = [random.randint(0,100) for i in range(20)]
>>> arr
[100, 76, 84, 37, 8, 69, 17, 1, 54, 70, 17, 3, 27, 13, 32, 63, 49, 86, 31, 100]
>>> for i in range(19):
	i_min = i
	for j in range(i+1, 20):
		if arr[j] < arr[i_min]:
			i_min = j
	if i_min != i:
		arr[i], arr[i_min] = arr[i_min], arr[i]

		
>>> arr
[1, 3, 8, 13, 17, 17, 27, 31, 32, 37, 49, 54, 63, 69, 70, 76, 84, 86, 100, 100]

 

建议百度选择排序或冒泡排序,这是c语言https://blog.csdn.net/hebtu666/article/details/97918838,这是py:https://blog.csdn.net/hebtu666/article/details/81434236

import random


def findSmallest(arr):
    smallest = arr[0]
    smallest_index = 0
    for i in range(1, len(arr)):
        if arr[i] < smallest:
            smallest = arr[i]
            smallest_index = i
    return smallest_index


def selectionSort(arr):
    newArr = []
    for i in range(len(arr)):
        smallest = findSmallest(arr)
        newArr.append(arr.pop(smallest))
    return newArr


def main():
    nums = []
    for i in range(20):
        nums.append(random.randint(1, 100))
    ret = selectionSort(nums)
    print(ret)


if __name__ == '__main__':
    main()

[3, 4, 14, 14, 17, 17, 18, 20, 21, 21, 24, 34, 43, 53, 58, 59, 63, 70, 70, 87]