请至少写一种除冒泡排序外的排序算法完整代码?可多写几种排序算法思路?
时间: 2023-06-13 11:03:06 浏览: 113
好的,我可以为您提供几种其他常见的排序算法实现,首先是选择排序算法:
```python
def selection_sort(nums):
n = len(nums)
for i in range(n):
# 找到未排序部分中最小元素的下标
min_index = i
for j in range(i + 1, n):
if nums[j] < nums[min_index]:
min_index = j
# 将最小元素移动到已排序部分末尾
nums[i], nums[min_index] = nums[min_index], nums[i]
return nums
```
其次,是插入排序算法
```python
def insertion_sort(nums):
n = len(nums)
for i in range(1, n):
# 将 nums[i] 插入到已排序部分中正确的位置
j = i
while j > 0 and nums[j] < nums[j - 1]:
nums[j], nums[j - 1] = nums[j - 1], nums[j]
j -= 1
return nums
```
还有一种常见的排序算法是归并排序,它将一个未排序数组分成两个长度相等(或尽可能接近)的子数组,对每个子数组进行递归调用,最后将它们合并起来,实现代码如下:
```python
def merge_sort(nums):
if len(nums) <= 1:
return nums
# 分割
mid = len(nums) // 2
left = merge_sort(nums[:mid])
right = merge_sort(nums[mid:])
# 合并
merged = []
i, j = 0, 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
merged.append(left[i])
i += 1
else:
merged.append(right[j])
j += 1
merged += left[i:]
merged += right[j:]
return merged
```
以上是几种排序算法的实现代码,它们的时间复杂度相差不大,各有优缺点。归并排序在数据量大时表现优异,但在实现上需要额外的空间。插入排序和选择排序则更适合小规模数据,但效率较低。
阅读全文