实现一个函数 `selection_sort`,接受一个整数列表作为参数,并返回排序后的列表。 要求使用选择排序算法对列表进行排序。
时间: 2024-02-06 21:09:17 浏览: 48
好的,选择排序是一种简单的排序算法,其基本思想是每次从未排序的部分中选择最小的元素,放到已排序部分的末尾。下面是 `selection_sort` 函数的实现:
```python
def selection_sort(lst):
n = len(lst)
for i in range(n):
# 找到未排序部分中最小的元素
min_idx = i
for j in range(i+1, n):
if lst[j] < lst[min_idx]:
min_idx = j
# 将最小元素放到已排序部分的末尾
lst[i], lst[min_idx] = lst[min_idx], lst[i]
return lst
```
我们首先获取列表的长度 `n`,然后进行 `n` 次遍历。在每次遍历中,我们找到未排序部分中最小的元素,并将其与已排序部分的末尾交换位置。最终,我们得到了一个排序后的列表。
例如,如果输入 `[3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]`,则输出为 `[1, 1, 2, 3, 3, 4, 5, 5, 5, 6, 9]`。
相关问题
用python完成以下题目代码 题目一:链表实现 创建一个 `LinkedList` 实例,进行以下操作: - 在链表末尾添加节点值为 1。 - 在链表末尾添加节点值为 2。 - 在链表末尾添加节点值为 3。 - 打印链表中所有节点的值。 - 删除节点值为 2 的节点。 - 打印链表中所有节点的值。 题目二:二分查找: 实现一个函数 `binary_search`,接受一个已排序的整数列表 `nums` 和一个目标值 `target`,返回目标值在列表中的索引位置。如果目标值不存在于列表中,则返回 -1。 要求使用迭代方式实现二分查找算法。 题目三:选择排序 实现一个函数 `selection_sort`,接受一个整数列表作为参数,并返回排序后的列表。 要求使用选择排序算法对列表进行排序。 题目四:图的广度优先搜索 实现一个函数 `dfs`,接受一个有向图和起始节点作为参数,并返回从起始节点开始的深度优先搜索遍历结果。 要求使用递归方式实现深度优先搜索算法。
题目一:
```python
class Node:
def __init__(self, data):
self.data = data
self.next = None
class LinkedList:
def __init__(self):
self.head = None
def addNode(self, data):
newNode = Node(data)
if self.head is None:
self.head = newNode
else:
current = self.head
while current.next is not None:
current = current.next
current.next = newNode
def printList(self):
current = self.head
while current is not None:
print(current.data)
current = current.next
def deleteNode(self, data):
current = self.head
if current is not None and current.data == data:
self.head = current.next
current = None
return
else:
while current is not None:
if current.data == data:
break
prev = current
current = current.next
if current == None:
return
prev.next = current.next
current = None
# Create a linked list instance
linkedList = LinkedList()
# Add nodes to the linked list
linkedList.addNode(1)
linkedList.addNode(2)
linkedList.addNode(3)
# Print all nodes in the linked list
linkedList.printList()
# Delete the node with value 2
linkedList.deleteNode(2)
# Print all nodes in the linked list again
linkedList.printList()
```
题目二:
```python
def binary_search(nums, target):
left = 0
right = len(nums) - 1
while left <= right:
mid = (left + right) // 2
if nums[mid] == target:
return mid
elif nums[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1
# Example usage
nums = [1, 3, 5, 7, 9]
target = 5
result = binary_search(nums, target)
print(result)
```
题目三:
```python
def selection_sort(nums):
for i in range(len(nums)):
min_index = i
for j in range(i+1, len(nums)):
if nums[j] < nums[min_index]:
min_index = j
nums[i], nums[min_index] = nums[min_index], nums[i]
return nums
# Example usage
nums = [64, 25, 12, 22, 11]
sorted_nums = selection_sort(nums)
print(sorted_nums)
```
题目四:
```python
def dfs(graph, start, visited=None):
if visited is None:
visited = set()
visited.add(start)
print(start)
for next_node in graph[start] - visited:
dfs(graph, next_node, visited)
return visited
# Example usage
graph = {'A': set(['B', 'C']),
'B': set(['A', 'D', 'E']),
'C': set(['A', 'F']),
'D': set(['B']),
'E': set(['B', 'F']),
'F': set(['C', 'E'])}
dfs(graph, 'A')
```
使用函数实现整数选择排序(一维数组作为指针参数)
下面是使用函数实现整数选择排序的示例代码:
```c
#include <stdio.h>
void selection_sort(int *arr, int n) {
int i, j, min_idx, temp;
for (i = 0; i < n - 1; i++) {
min_idx = i;
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[min_idx]) {
min_idx = j;
}
}
temp = arr[i];
arr[i] = arr[min_idx];
arr[min_idx] = temp;
}
}
int main() {
int arr[] = {3, 7, 1, 5, 2, 9, 4, 6, 8};
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("Original array: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
selection_sort(arr, n);
printf("\nSorted array: ");
for (i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在上述代码中,`selection_sort` 函数接受一个整型指针 `arr` 和一个整数 `n`,表示待排序数组的长度。函数实现了选择排序算法,将指针所指的数组排序。在主函数中,我们定义了一个整型数组 `arr`,并将其传递给 `selection_sort` 函数。最后,我们输出排序后的数组。
阅读全文