1.假设某个数组中有10个无重复且无序的数据。要求: 1)先根据从小到大的顺序排序; 2)从终端输入1个数,然后输出该数是数组中第几个元素的值,如果该数不在数组中,则打印出“无此数”。
时间: 2024-05-15 16:18:37 浏览: 8
好的,这是一道比较基础的算法题,可以采用排序算法和二分查找算法来解决。
首先,我们可以采用冒泡排序算法或者快速排序算法对数组进行从小到大的排序。这里我以冒泡排序算法为例,代码如下:
```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]
return arr
```
然后,我们可以采用二分查找算法来查找输入的数在数组中的位置。代码如下:
```python
# 二分查找算法
def binary_search(arr, target):
n = len(arr)
left, right = 0, n-1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
```
最后,我们将两个算法结合起来,完整代码如下:
```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]
return arr
# 二分查找算法
def binary_search(arr, target):
n = len(arr)
left, right = 0, n-1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# 主函数
if __name__ == '__main__':
# 初始化数组
arr = [5, 9, 1, 3, 7, 8, 2, 4, 6, 10]
# 排序数组
arr = bubble_sort(arr)
print("排序后的数组为:", arr)
# 输入需要查找的数
target = int(input("请输入需要查找的数:"))
# 查找数的位置
index = binary_search(arr, target)
if index == -1:
print("无此数")
else:
print("该数在数组中的位置为:", index+1)
```
运行代码,输入需要查找的数,即可得到该数在数组中的位置。
注意:如果输入的数不在数组中,程序会输出“无此数”。