主题:急!求指点qsort如何对实数排序
burger
[专家分:0] 发布于 2011-06-20 15:36:00
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个回复)
沙发
burger [专家分:0] 发布于 2011-06-20 15:38:00
看似应该能对实数排序可实际上不能啊,关键是谁能给举个实数排序的例子啊!我用的是cvf 6.6
板凳
bshine1225 [专家分:720] 发布于 2011-06-20 18:02:00
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 楼
shou18 [专家分:10] 发布于 2011-06-21 09:22:00
这样应该可以
4 楼
burger [专家分:0] 发布于 2011-06-21 11:53:00
请问是给实数排序么
5 楼
cgl_lgs [专家分:21040] 发布于 2011-06-21 12:17:00
比较函数要返回整型,其他没事儿。这是C库函数啊。。。
6 楼
bshine1225 [专家分:720] 发布于 2011-06-21 16:04:00
CALL QSORT (array,len,isize,compar)
array (Input) Any type. One-dimensional array to be sorted.
需要排序的数组可以是任意类型,详细可以查帮助
7 楼
burger [专家分:0] 发布于 2011-06-21 23:32:00
你能举个给实数排序的例子吗?谢谢!
8 楼
burger [专家分:0] 发布于 2011-06-21 23:32:00
你能举个给实数排序的例子吗?谢谢!
9 楼
burger [专家分:0] 发布于 2011-06-21 23:33:00
你能举个给实数排序的例子吗?谢谢!
10 楼
burger [专家分:0] 发布于 2011-06-21 23:33:00
你能举个给实数排序的例子吗?谢谢!
我来回复