python实现排序

mac2022-06-30  137

选择排序   1 def selectSort(data): 2 num = len(data) 3 for i in range(num-1): 4 min_index = i 5 for j in range(i+1,num): 6 if data[j] < data[min_index]: 7 min_index = j 8 data[i], data[min_index] = data[min_index], data[i] 9 return data 10 data = [5,6,3,2,1,65,2,0,8,0] 11 result = selectSort(data) 12 print(result)   
冒泡排序   1 def bubbleSort(data): 2 n = len(data) 3 for i in range(n): 4 # Last i elements are already in place 5 for j in range(0, n-i-1): 6 if data[j] > data[j+1] : 7 data[j], data[j+1] = data[j+1], data[j] 8 return data 9 data = [5,6,3,2,1,65,2,0,8,0] 10 result = bubbleSort(data) 11 print(result)

 

 


插入排序 1 def insertSort(data): 2 num = len(data) 3 for i in range(1,num): 4 key = data[i] 5 for j in range(i-1,-1,-1): 6 if data[j] > key: 7 data[j+1] = data[j] 8 data[j] = key 9 return data 10 data = [5,6,3,2,1,65,2,0,8,0] 11 result = insertSort(data) 12 print(result)

 

 


基数排序:计数排序和桶排序都属于非比较排序,时间复杂度为O(n), 基数排序一般用于长度 同的元素组成的数组。首先按照最低有效数字进行排序,然后由低位向高位进行。 1 import random 2 def radixSort(data, bit): 3 for k in range(bit): #4轮排序 4 s=[[] for i in range(10)] 5 for i in data: 6 s[int(i/(10**k))].append(i) 7 data=[a for b in s for a in b] 8 return data 9 data=[random.randint(1,9999) for i in range(20)] 10 result=radixSort(data ,4) 11 print(result)  
计数排序: 假设n个输入元素中每一个都是介于0到k之间的整数,此处k为某个整数。当k=O(n)时,计数排序的运行时间为Θ(n)。对每一个数的元素x,确定出小于x的元素个数。有了这一信息就可以把x直接放到最终输出数组中的位置上。   1 def countSort(data,num): 2 b=[0 for i in range(num)] 3 c=[0 for i in range(num+1)] 4 for i in data: 5 c[i]+=1 6 for i in range(1,len(c)): 7 c[i]=c[i-1]+c[i] 8 for i in data: 9 b[c[i]-1]=i 10 c[i]-=1 11 return b 12 13 14 a=[random.randint(0,100) for i in range(100)] 15 print(countSort(a,len(a)))

 

     
桶排序: 通排序不能排序小数,桶排序也叫计数排序,简单来说,就是将数据集里面所有元素按顺序列举出来,然后统计元素出现的次数。最后按顺序输出数据集里面的元素。 1 def bucketSort(nums): 2 max_num = max(nums) 3 bucket = [0]*(max_num+1) 4 for i in nums: 5 bucket[i] += 1 6 sort_nums = [] 7 for j in range(len(bucket)): 8 if bucket[j] != 0: 9 for y in range(bucket[j]): 10 sort_nums.append(j) 11 return sort_nums 12 nums = [5,6,3,2,1,65,2,0,8,0] 13 print(bucketSort(nums))

 

转载于:https://www.cnblogs.com/charlie7/p/11276409.html

最新回复(0)