fortran90实现常用插入排序的函数
时间: 2023-08-05 10:28:24 浏览: 107
以下是一个使用插入排序算法实现的 Fortran90 函数:
```
subroutine insertion_sort(arr, n)
implicit none
integer, intent(inout) :: arr(n) ! 数组
integer, intent(in) :: n ! 数组长度
integer :: i, j, tmp
do i = 2, n
tmp = arr(i)
j = i - 1
do while ((j >= 1) .and. (arr(j) > tmp))
arr(j+1) = arr(j)
j = j - 1
end do
arr(j+1) = tmp
end do
end subroutine insertion_sort
```
这个函数使用插入排序算法,从数组的第二个元素开始,逐个将元素插入到已排序的子数组中。在每次插入时,我们将要插入的元素 `tmp` 与已排序的子数组中的元素逐个比较,找到插入位置后将其他元素后移一位,然后将 `tmp` 插入到正确的位置。
你可以在程序中调用这个函数并传入一个整数数组和数组长度,它将返回排序后的数组。
相关问题
fortran90实现希尔排序的函数
以下是Fortran90实现希尔排序的函数示例:
```fortran
subroutine shell_sort(arr, n)
implicit none
integer, intent(inout) :: arr(n)
integer, value :: n, i, j, gap, temp
! Determine the gap sequence
gap = n/2
do while (gap > 0)
do i = gap+1, n
temp = arr(i)
j = i
do while (j > gap .and. arr(j-gap) > temp)
arr(j) = arr(j-gap)
j = j - gap
end do
arr(j) = temp
end do
gap = gap/2
end do
end subroutine shell_sort
```
该函数接受一个整数数组arr和数组长度n作为参数,并将数组按升序进行希尔排序。希尔排序是一种插入排序的改进版本,它通过将整个数组划分为多个较小的子序列,分别进行插入排序,最终合并成一个有序序列。希尔排序的时间复杂度为O(nlogn),但它的性能受到子序列划分的影响,不同的gap序列可能会导致不同的性能表现。
阅读全文