写一段python的选择排序
时间: 2023-06-06 16:04:59 浏览: 31
当然,我很乐意回答你的问题!下面是Python的选择排序代码:
```
def selection_sort(arr):
n = len(arr)
for i in range(n-1):
min_idx = i
for j in range(i+1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr
```
以上代码实现了选择排序算法,可以对一个包含数字的列表进行排序。希望这个答案能够帮到你!
相关问题
写一段python冒泡排序
当然可以!以下是一个简单的 Python 冒泡排序的实现:
```python
def bubble_sort(arr):
n = len(arr)
for i in range(n-1):
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
return arr
# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = bubble_sort(arr)
print("排序后的数组:", sorted_arr)
```
这段代码使用了两层循环,外层循环控制比较轮数,内层循环执行实际的比较和交换操作。每一轮内层循环会将当前最大的元素移动到末尾,因此经过 `n-1` 轮循环后,整个数组就会被排序。最后打印出排序后的数组。
注意,冒泡排序是一种简单但效率较低的排序算法,对于大规模数据排序可能不太适用。
写一段python归并排序
当然可以!以下是一个使用Python实现归并排序算法的示例代码:
```python
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left_half = arr[:mid]
right_half = arr[mid:]
left_half = merge_sort(left_half)
right_half = merge_sort(right_half)
return merge(left_half, right_half)
def merge(left, right):
merged = []
left_index, right_index = 0, 0
while left_index < len(left) and right_index < len(right):
if left[left_index] < right[right_index]:
merged.append(left[left_index])
left_index += 1
else:
merged.append(right[right_index])
right_index += 1
while left_index < len(left):
merged.append(left[left_index])
left_index += 1
while right_index < len(right):
merged.append(right[right_index])
right_index += 1
return merged
# 测试示例
arr = [5, 2, 8, 12, 3, 7, 1, 9]
sorted_arr = merge_sort(arr)
print(sorted_arr)
```
这段代码定义了两个函数:`merge_sort` 和 `merge`。`merge_sort` 函数使用递归将数组分割成较小的部分,直到只剩下一个元素。然后,它使用 `merge` 函数合并这些部分并按照升序进行排序。
`merge` 函数接受两个有序的子数组,并将它们按照升序合并为一个新的有序数组。
在示例中,我们使用 `[5, 2, 8, 12, 3, 7, 1, 9]` 这个数组进行测试,并打印出排序后的结果。