回 帖 发 新 帖 刷新版面

主题:急!求指点qsort如何对实数排序

program main
external compar
integer*2 compar
INTEGER*4:: array(10)=(/5,1,9,0,8,7,3,4,6,2/),len=10,isize=4
call qsort( array, len, isize, compar )
write(*,'(10i3)') array
end
integer*2 function compar( a, b )
INTEGER*4 a, b
if ( a .lt. b ) compar = -1
if ( a .eq. b ) compar = 0
if ( a .gt. b ) compar = 1
return
end

program main
external compar
real*8 compar
real*8:: array(10)=(/5,1,9,0,8,7,3,4,6,2/)
integer:: len=10,isize=8
call qsort( array, len, isize, compar )
write(*,'(10f9.0)') array
end
real*8 function compar( a, b )
real*8  a, b
if ( a .lt. b ) compar = -1
if ( a .eq. b ) compar = 0
if ( a .gt. b ) compar = 1
return
end

回复列表 (共11个回复)

沙发

看似应该能对实数排序可实际上不能啊,关键是谁能给举个实数排序的例子啊!我用的是cvf 6.6

板凳

Example 

 PROGRAM SORTQ
    USE DFPORT
    integer(2), external :: cmp_function
    integer(2) insort(26), i
    integer (4) array_len, array_size
    array_len = 26
    array_size = 2
    do i=90,65,-1
      insort(i-64)=91 - i
    end do
    print *, "Before: "
    print *,insort
    CALL qsort(insort,array_len,array_size,cmp_function)
    print *, 'After: '
    print *, insort
 END
 !
    integer(2) function cmp_function(a1, a2)
    integer(2) a1, a2
    cmp_function=a1-a2
    end function

3 楼

这样应该可以

4 楼


请问是给实数排序么

5 楼

比较函数要返回整型,其他没事儿。这是C库函数啊。。。

6 楼

CALL QSORT (array,len,isize,compar)

array      (Input) Any type. One-dimensional array to be sorted.

需要排序的数组可以是任意类型,详细可以查帮助

7 楼


你能举个给实数排序的例子吗?谢谢!

8 楼


你能举个给实数排序的例子吗?谢谢!

9 楼


你能举个给实数排序的例子吗?谢谢!

10 楼


你能举个给实数排序的例子吗?谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册