クイックソート
Namespace: fvalgcliAssembly: fvalgcli (in fvalgcli.dll) Version: 3.1.0.0 (3.1.0.11)
Syntax
C# |
---|
public static void fnFIE_qsort(
IntPtr pvbase,
SIZE_T num,
SIZE_T size,
CompareDelegate comp
) |
Visual Basic |
---|
Public Shared Sub fnFIE_qsort (
pvbase As IntPtr,
num As SIZE_T,
size As SIZE_T,
comp As CompareDelegate
) |
Examples
C# | Copy |
---|
using System;
using System.Collections.Generic;
using System.Text;
using fvalgcli;
namespace TC
{
public partial class FIE
{
[FvPluginExecute]
public void fnFIE_qsort()
{
DPNT_T_PTR points = DPNT_T_PTR.Zero;
int num = 5;
try
{
points = DPNT_T_PTR.alloc(num);
points[0] = DPNT_T.init(1, 9);
points[1] = DPNT_T.init(3, 5);
points[2] = DPNT_T.init(2, 3);
points[3] = DPNT_T.init(5, 8);
points[4] = DPNT_T.init(3, 3);
CompareDelegate comp = qsort_comp;
api.fnFIE_qsort(points, num, DPNT_T_PTR.SizeOfItem, comp);
for (int i = 0; i < num; i++)
Console.WriteLine("fnFIE_qsort: points[{0}]={1},{2}", i, points[i].x, points[i].y);
}
finally
{
points.Dispose();
}
}
private static int qsort_comp(System.IntPtr elem1, System.IntPtr elem2)
{
DPNT_T _elem1 = ((DPNT_T_PTR)elem1)[0];
DPNT_T _elem2 = ((DPNT_T_PTR)elem2)[0];
if (_elem1.x < _elem2.x) return -1;
if (_elem1.x > _elem2.x) return 1;
if (_elem1.y < _elem2.y) return -1;
if (_elem1.y > _elem2.y) return 1;
return 0;
}
}
} |
Visual Basic | Copy |
---|
Imports System.Collections.Generic
Imports System.Text
Imports fvalgcli
Public Partial Class FIE
<FvPluginExecute> _
Public Sub fnFIE_qsort()
Dim points As DPNT_T_PTR = DPNT_T_PTR.Zero
Dim num As Integer = 5
Try
points = DPNT_T_PTR.alloc(num)
points(0) = DPNT_T.init(1, 9)
points(1) = DPNT_T.init(3, 5)
points(2) = DPNT_T.init(2, 3)
points(3) = DPNT_T.init(5, 8)
points(4) = DPNT_T.init(3, 3)
Dim comp As CompareDelegate = AddressOf qsort_comp
api.fnFIE_qsort(points, num, DPNT_T_PTR.SizeOfItem, comp)
For i As Integer = 0 To num - 1
Console.WriteLine("fnFIE_qsort: points[{0}]={1},{2}", i, points(i).x, points(i).y)
Next
Finally
points.Dispose()
End Try
End Sub
Private Shared Function qsort_comp(elem1 As System.IntPtr, elem2 As System.IntPtr) As Integer
Dim _elem1 As DPNT_T = CType(elem1, DPNT_T_PTR)(0)
Dim _elem2 As DPNT_T = CType(elem2, DPNT_T_PTR)(0)
If _elem1.x < _elem2.x Then
Return -1
End If
If _elem1.x > _elem2.x Then
Return 1
End If
If _elem1.y < _elem2.y Then
Return -1
End If
If _elem1.y > _elem2.y Then
Return 1
End If
Return 0
End Function
End Class |
See Also