输入任意奇数个整数,要求计算中间数(数值大小处于中间的值)并输出,需要用两种方法解答
时间: 2024-02-21 11:59:12 浏览: 87
Vijeo Citect数值输入的两种方法
好的,我来回答你的问题。
第一种方法是将输入的整数存储在列表中,然后对列表进行排序,取出中间的数即可。代码如下:
```
nums = input("请输入奇数个整数,用空格隔开:")
nums_list = nums.split(" ")
nums_list = [int(num) for num in nums_list]
nums_list.sort()
mid_index = len(nums_list) // 2
mid_num = nums_list[mid_index]
print("中间数为:", mid_num)
```
输入示例:
```
请输入奇数个整数,用空格隔开:1 3 2 4 5
```
输出结果为:
```
中间数为: 3
```
第二种方法是使用快速选择算法,可以在O(n)的时间复杂度内找到中间的数。代码如下:
```
import random
def quick_select(nums, left, right, k):
if left == right:
return nums[left]
pivot_index = random.randint(left, right)
pivot_index = partition(nums, left, right, pivot_index)
if k == pivot_index:
return nums[k]
elif k < pivot_index:
return quick_select(nums, left, pivot_index - 1, k)
else:
return quick_select(nums, pivot_index + 1, right, k)
def partition(nums, left, right, pivot_index):
pivot_value = nums[pivot_index]
nums[pivot_index], nums[right] = nums[right], nums[pivot_index]
store_index = left
for i in range(left, right):
if nums[i] < pivot_value:
nums[i], nums[store_index] = nums[store_index], nums[i]
store_index += 1
nums[right], nums[store_index] = nums[store_index], nums[right]
return store_index
nums = input("请输入奇数个整数,用空格隔开:")
nums_list = nums.split(" ")
nums_list = [int(num) for num in nums_list]
mid_index = len(nums_list) // 2
mid_num = quick_select(nums_list, 0, len(nums_list) - 1, mid_index)
print("中间数为:", mid_num)
```
输入示例:
```
请输入奇数个整数,用空格隔开:1 3 2 4 5
```
输出结果为:
```
中间数为: 3
```
阅读全文