帮我用fortran语言写一个二分法排序
时间: 2023-08-04 08:15:46 浏览: 53
好的,以下是使用Fortran语言编写的二分法排序的示例代码:
```fortran
program binary_search
implicit none
integer, parameter :: n = 10 ! 数组大小
integer :: i, j, low, high, mid, search, temp
integer :: array(n) = (/10, 2, 8, 5, 3, 9, 4, 1, 7, 6/) ! 待排序数组
! 输出原始数组
write (*, *) 'Original array:'
do i = 1, n
write (*, *) array(i)
end do
! 对数组进行二分法排序
do i = 1, n-1
do j = i+1, n
if (array(i) > array(j)) then
temp = array(i)
array(i) = array(j)
array(j) = temp
end if
end do
end do
! 输出排序后的数组
write (*, *) 'Sorted array:'
do i = 1, n
write (*, *) array(i)
end do
! 输入要查找的数
write (*, *) 'Enter the number to search:'
read (*, *) search
! 在排序后的数组中进行二分查找
low = 1
high = n
do while (low <= high)
mid = (low + high) / 2
if (array(mid) == search) then
write (*, *) 'Number found at position', mid
exit
else if (array(mid) > search) then
high = mid - 1
else
low = mid + 1
end if
end do
if (low > high) then ! 数字未找到
write (*, *) 'Number not found'
end if
end program binary_search
```
代码中,我们首先定义了一个大小为10的整型数组 `array`,并初始化了数组中的元素。然后使用两层循环来进行二分法排序,将数组按升序排列。接着,我们输入要查找的数字,并使用二分查找算法在排序后的数组中查找该数字。最后输出查找结果。
需要注意的是,Fortran语言中的数组下标从1开始,而非从0开始,因此在代码中我们使用了 `do i = 1, n` 来遍历数组中的元素。