大佬教程收集整理的这篇文章主要介绍了python算法初步(一),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
时间效率O(n²)原理:依次比较相邻两个位置的元素大小,然后按照要求交换位置。
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。 def SELEct_sort(data): for i in range(len(data)-1):#需要选择的次数 min = i for j in range(i+1,len(data)):#用于找到最小值所在的位置 if data[min] > data[j]: min = j data[min],data[i] = data[i],data[min]#找到最小值所在的位置后,进行交换位置。 return data import random data_list=[i*i for i in range(10)] random.shuffle(data_list) print("使用索引交换位置,从小到大排序",SELEct_sort(data_list)) print('*'*40) #选择排序 #从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。 def SELEct_sort(data): for i in range(len(data)-1):#需要选择的次数 min = data[i] for j in range(i+1,len(data)):#用于找到最小值所在的位置 if min > data[j]: min = data[j] data[data.index(min)],data[i] = data[i],data[data.index(min)]#找到最小值所在的位置后,进行交换位置。 return data import random data_list = list(range(30)) #用于生成列表 random.shuffle(data_list) #用于打乱列表 data_list print("使用数据交换位置,从小到大排序",SELEct_sort(data_list)) print('='*40) #选择排序 #从中依次选择出一个数据(进行比较),然后和其他数据进行比较,然后更换索引,或者直接交换数据本身 def SELEct_sort(data): for i in range(len(data)-1): max = i for j in range(i+1,len(data)): if data[max] < data[j]: max = j data[i],data[max] = data[max],data[i] return data import random data_list = [i**3 for i in range(23)] random.shuffle(data_list) print("使用索引交换位置,从小到大排序",SELEct_sort(data_list)) print('*'*40) #选择排序 #来来交换数据的本身,从大到小排序 def SELEct_sort(data): for i in range(len(data)-1): max = data[i] for j in range(i+1,len(data)): if max < data[j]: max = data[j] data[data.index(maX)],data[i] = data[i],data[data.index(maX)] return data import random data_list = [i**4 for i in range(20)] random.shuffle(data_list) print("使用数据交换位置,从小到大排序",SELEct_sort(data_list)) #结果 ''' 使用索引交换位置,从小到大排序 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] **************************************** 使用数据交换位置,从小到大排序 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29] ======================================== 使用索引交换位置,从小到大排序 [10648, 9261, 8000, 6859, 5832, 4913, 4096, 3375, 2744, 2197, 1728, 1331, 1000, 729, 512, 343, 216, 125, 64, 27, 8, 1, 0] **************************************** 使用数据交换位置,从小到大排序 [130321, 104976, 83521, 65536, 50625, 38416, 28561, 20736, 14641, 10000, 6561, 4096, 2401, 1296, 625, 256, 81, 16, 1, 0] '''
时间效率O(n²)
原理:依次选出一个数据(作为初始数据),然后依次与其他数据进行比较,找出最小(最大)的数据,然后和初始数据交换位置。
#从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。 def SELEct_sort(data): for i in range(len(data)-1):#需要选择的次数 min = i for j in range(i+1,len(data)):#用于找到最小值所在的位置 if data[min] > data[j]: min = j data[min],data[i] = data[i],data[min]#找到最小值所在的位置后,进行交换位置。 return data import random data_list=[i*i for i in range(10)] random.shuffle(data_list) print("使用索引交换位置,从小到大排序",SELEct_sort(data_list)) print('*'*40) #选择排序 #从中选出一个数据(作为最小数据),然后和其他的数据依次比较,如果有更小的数据,那么就一次比较。 def SELEct_sort(data): for i in range(len(data)-1):#需要选择的次数 min = data[i] for j in range(i+1,len(data)):#用于找到最小值所在的位置 if min > data[j]: min = data[j] data[data.index(min)],data[i] = data[i],data[data.index(min)]#找到最小值所在的位置后,进行交换位置。 return data import random data_list = list(range(30)) #用于生成列表 random.shuffle(data_list) #用于打乱列表 data_list print("使用数据交换位置,从小到大排序",SELEct_sort(data_list)) print('='*40) #选择排序 #从中依次选择出一个数据(进行比较),然后和其他数据进行比较,然后更换索引,或者直接交换数据本身 def SELEct_sort(data): for i in range(len(data)-1): max = i for j in range(i+1,len(data)): if data[max] < data[j]: max = j data[i],data[max] = data[max],data[i] return data import random data_list = [i**3 for i in range(23)] random.shuffle(data_list) print("使用索引交换位置,从小到大排序",SELEct_sort(data_list)) print('*'*40) #选择排序 #来来交换数据的本身,从大到小排序 def SELEct_sort(data): for i in range(len(data)-1): max = data[i] for j in range(i+1,len(data)): if max < data[j]: max = data[j] data[data.index(maX)],data[i] = data[i],data[data.index(maX)] return data import random data_list = [i**4 for i in range(20)] random.shuffle(data_list) print("使用数据交换位置,从小到大排序",SELEct_sort(data_list)) #结果 ''' 使用索引交换位置,从小到大排序 [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] **************************************** 使用数据交换位置,从小到大排序 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29] ======================================== 使用索引交换位置,从小到大排序 [10648, 9261, 8000, 6859, 5832, 4913, 4096, 3375, 2744, 2197, 1728, 1331, 1000, 729, 512, 343, 216, 125, 64, 27, 8, 1, 0] **************************************** 使用数据交换位置,从小到大排序 [130321, 104976, 83521, 65536, 50625, 38416, 28561, 20736, 14641, 10000, 6561, 4096, 2401, 1296, 625, 256, 81, 16, 1, 0] '''
以上是大佬教程为你收集整理的python算法初步(一)全部内容,希望文章能够帮你解决python算法初步(一)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。