有15个数按由大到小的顺序放在一个数组中,输入一个数,要求找出该数是数组中的第几个元素。若该数不在数组中,则输出“无此数!”。用函数完成。
时间: 2023-08-11 20:02:32 浏览: 199
### 回答1:
可以定义一个函数,接收一个数组和一个数作为参数,然后在函数内部对数组进行排序,再使用循环遍历数组,查找该数在数组中的位置。如果找到了,就返回该数在数组中的下标加1,即为该数是数组中的第几个元素;如果没有找到,就返回“无此数!”。
函数的代码如下:
```python
def find_num(arr, num):
arr.sort(reverse=True) # 对数组进行排序,从大到小
for i in range(len(arr)):
if arr[i] == num:
return i + 1 # 找到了,返回该数在数组中的下标加1
return "无此数!" # 没有找到,返回“无此数!”
```
使用示例:
```python
arr = [10, 8, 6, 4, 2, 9, 7, 5, 3, 1, 11, 13, 15, 12, 14]
num = 7
print(find_num(arr, num)) # 输出:7
```
注意:这里假设输入的数组已经按照从大到小的顺序排好了序。如果没有排好序,可以在函数内部先进行排序。
### 回答2:
首先,我们可以定义一个函数,参数为数组和目标数。接下来,我们使用循环遍历数组中的元素,然后判断目标数与当前元素是否相等。若相等,则返回当前元素的索引加一即可。若循环结束仍未找到相等的元素,则输出"无此数"。
以下是具体步骤:
1. 定义一个函数,参数为数组arr和目标数target。
2. 使用循环遍历数组arr中的元素,从最大值开始,判断元素是否等于目标数target。
3. 若等于,则返回当前元素的索引加一。
4. 若循环结束仍未找到相等的元素,则输出"无此数"。
5. 编写代码测试函数的功能。
代码实现如下:
```python
def find_element(arr, target):
for i in range(len(arr), 0, -1):
if arr[i-1] == target:
return i
return "无此数!"
arr = [15, 12, 10, 8, 6, 5, 4, 3, 2, 1, -1, -3, -5, -7, -9]
target = int(input("请输入一个数:"))
result = find_element(arr, target)
print(result)
```
假设输入的数为12,则输出结果为2,即目标数12在数组中的第2个元素。如果输入的数为0,则输出结果为"无此数!",即目标数不在数组中。
### 回答3:
可以使用二分查找算法来解决这个问题。首先,我们需要将给定的15个数按从大到小的顺序存入一个数组中。然后,定义一个函数,该函数接受两个参数:要查找的数和数组。
在函数中,我们使用二分查找算法来查找给定的数。具体步骤如下:
1. 设置左边界为0,右边界为数组长度减1。
2. 当左边界小于等于右边界时,重复以下步骤:
a. 计算中间位置的索引,即(left + right) / 2。
b. 如果中间位置的数等于要查找的数,则返回该中间位置索引值加1。
c. 如果中间位置的数大于要查找的数,则将右边界更新为中间位置减1。
d. 如果中间位置的数小于要查找的数,则将左边界更新为中间位置加1。
3. 如果左边界大于右边界,则说明要查找的数不在数组中,返回“无此数!”。
以下是完成上述步骤的函数的示例代码:
```python
def find_number(num, arr):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == num:
return mid + 1
elif arr[mid] > num:
right = mid - 1
else:
left = mid + 1
return "无此数!"
```
然后,我们可以在主程序中使用该函数来查找给定的数在数组中的位置。示例代码如下:
```python
arr = [20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6]
num = int(input("请输入一个数:"))
position = find_number(num, arr)
print(position)
```
通过上述代码,我们就可以找出给定的数在数组中的位置,或者输出“无此数!”。
阅读全文