1.输入一组关键字并存储。 2.用不同排序算法对关键字进行排序 给一关键字序列,查找给定关键字所在的位序,若不在表中,则返回0。
时间: 2023-12-15 09:05:36 浏览: 110
好的,这些任务可以通过编写算法来实现。下面是我的建议:
1. 输入一组关键字并存储
为了存储一组关键字,我们可以使用数组或链表等数据结构。下面是使用 Python 语言实现的示例代码:
```python
keywords = ['apple', 'banana', 'orange', 'pear', 'kiwi']
```
2. 用不同排序算法对关键字进行排序
常见的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序等。下面是使用 Python 语言实现的示例代码:
```python
# 冒泡排序
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n-i-1):
if arr[j] > arr[j+1]:
arr[j], arr[j+1] = arr[j+1], arr[j]
# 选择排序
def selection_sort(arr):
n = len(arr)
for i in range(n):
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]
# 插入排序
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key
# 快速排序
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr)//2]
left, right, equal = [], [], []
for x in arr:
if x < pivot:
left.append(x)
elif x > pivot:
right.append(x)
else:
equal.append(x)
return quick_sort(left) + equal + quick_sort(right)
# 归并排序
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
res = []
i, j = 0, 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
res.append(left[i])
i += 1
else:
res.append(right[j])
j += 1
res += left[i:]
res += right[j:]
return res
# 使用冒泡排序对关键字进行排序
bubble_sort(keywords)
# 使用选择排序对关键字进行排序
selection_sort(keywords)
# 使用插入排序对关键字进行排序
insertion_sort(keywords)
# 使用快速排序对关键字进行排序
keywords = quick_sort(keywords)
# 使用归并排序对关键字进行排序
keywords = merge_sort(keywords)
```
3. 给一关键字序列,查找给定关键字所在的位序,若不在表中,则返回0。
为了查找给定关键字所在的位序,我们可以使用线性查找或二分查找等算法。下面是使用 Python 语言实现的示例代码:
```python
# 线性查找
def linear_search(arr, key):
n = len(arr)
for i in range(n):
if arr[i] == key:
return i+1
return 0
# 二分查找
def binary_search(arr, key):
n = len(arr)
left, right = 0, n-1
while left <= right:
mid = (left + right) // 2
if arr[mid] == key:
return mid+1
elif arr[mid] < key:
left = mid + 1
else:
right = mid - 1
return 0
# 查找给定关键字所在的位序
pos = linear_search(keywords, 'orange') # 或 binary_search(keywords, 'orange')
if pos > 0:
print('关键字 orange 在表中的位序为', pos)
else:
print('关键字 orange 不在表中')
```
希望这些代码对你有所帮助!
阅读全文