1.输入10个有序的整数关键字,利用折半查找法,查找用户输入的关键字。 2.试以单链表为存储结构,实现简单的选择排序算法。
时间: 2024-03-11 07:43:31 浏览: 105
1. 可以按照以下步骤实现折半查找法:
```python
# 定义折半查找函数
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] > target:
right = mid - 1
else:
left = mid + 1
return -1 # 如果查找不到,返回-1
# 输入有序整数关键字
arr = list(map(int, input("请输入10个有序整数关键字,用空格隔开:").split()))
# 输入要查找的关键字
target = int(input("请输入要查找的关键字:"))
# 调用折半查找函数
result = binary_search(arr, target)
# 输出查找结果
if result != -1:
print("要查找的关键字在数组中的位置为:", result)
else:
print("数组中不存在要查找的关键字!")
```
2. 以单链表为存储结构实现简单的选择排序算法,可以按照以下步骤实现:
```python
# 定义单链表节点类
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
# 定义选择排序函数
def selection_sort(head):
if not head or not head.next:
return head
dummy = ListNode(0, head)
cur = head
while cur.next:
pre_min, min_node = cur, cur.next
while min_node:
if min_node.val < pre_min.next.val:
pre_min = cur
min_node = min_node.next
cur = cur.next
if pre_min != cur:
tmp = pre_min.next
pre_min.next = pre_min.next.next
tmp.next = cur.next
cur.next = tmp
cur = pre_min.next
return dummy.next
# 创建单链表
head = ListNode(6, ListNode(3, ListNode(8, ListNode(2, ListNode(9, ListNode(1, None))))))
# 输出原始链表
cur = head
print("原始链表:", end="")
while cur:
print(cur.val, end=" ")
cur = cur.next
# 调用选择排序函数
new_head = selection_sort(head)
# 输出排序后的链表
cur = new_head
print("\n排序后的链表:", end="")
while cur:
print(cur.val, end=" ")
cur = cur.next
```
以上就是对两道问题的回答,希望对您有所帮助!
阅读全文