标签:min python max list range 初步 算法 排序 data
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] '''
标签:min,python,max,list,range,初步,算法,排序,data 来源: https://www.cnblogs.com/caomengqi/p/15100343.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。