Python实现希尔排序,归并排序和桶排序的示例代码
希尔排序
算法思想
希尔排序是插入排序的一种改进版本,它的基本思想是将待排序的数组分割成若干个子序列,对每个子序列进行插入排序,然后再将整个序列逐步缩小进行排序,直至最后整个序列排序完成。
示例代码
def shell_sort(arr):
n = len(arr)
gap = n // 2
while gap > 0:
for i in range(gap, n):
temp = arr[i]
j = i
while j >= gap and arr[j - gap] > temp:
arr[j] = arr[j - gap]
j -= gap
arr[j] = temp
gap //= 2
return arr
归并排序
算法思想
归并排序是一种分治算法,它将待排序的序列分成两个子序列,对每个子序列进行排序,然后将已排序的子序列合并成一个有序的序列,依次完成该过程,就可以得到最终的有序序列。
示例代码
def merge_sort(arr):
if len(arr) > 1:
mid = len(arr) // 2
left_arr = arr[:mid]
right_arr = arr[mid:]
merge_sort(left_arr)
merge_sort(right_arr)
i = j = k = 0
while i < len(left_arr) and j < len(right_arr):
if left_arr[i] < right_arr[j]:
arr[k] = left_arr[i]
i += 1
else:
arr[k] = right_arr[j]
j += 1
k += 1
while i < len(left_arr):
arr[k] = left_arr[i]
i += 1
k += 1
while j < len(right_arr):
arr[k] = right_arr[j]
j += 1
k += 1
return arr
桶排序
算法思想
桶排序是一种排序算法,它通过将待排序的数组分组成几个桶,将每个桶内的元素进行排序,最后将所有桶合并,得到一个有序的序列。
示例代码
def bucket_sort(arr):
max_num = max(arr)
bucket_arr = [0] * (max_num + 1)
for i in arr:
bucket_arr[i] += 1
sort_arr = []
for j in range(len(bucket_arr)):
if bucket_arr[j] != 0:
for k in range(bucket_arr[j]):
sort_arr.append(j)
return sort_arr
示例说明
以上三种排序算法都是常用的排序算法,其中希尔排序和归并排序是比较常用的算法,桶排序在一些特殊的数据集合中也有用武之地。在使用这些算法时,必须理解它们的思想,并能够根据具体的场景选择合适的算法。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现希尔排序,归并排序和桶排序的示例代码 - Python技术站