先上效果图

升序排列

降序排列

代码如下:
//============================================================================
//NAME:SelectionSort
//TYPE:FC BLOCK
//LANGUAGE:SCL
//AUTHOR:3ao
//VERSION:1.0
//FAMILY:Triao A&E
//USER-DEFINED ID:Sort_Selection
//----------------------------------------------------------------------------
//functional description:
//this FC is to sort the Array contains INT-type elements by using selection sort.
//----------------------------------------------------------------------------
FUNCTION "SelectionSort_SCL" : Void
{ S7_Optimized_Access := 'FALSE' }
VERSION : 0.1
VAR_INPUT
"Ascending / Dscending" : Int;
END_VAR
VAR_IN_OUT
"array" : Array[0..9] of Int;
END_VAR
VAR_TEMP
externalIndex : Int;
internalIndex : Int;
min : Int;
max : Int;
length : Int;
temp : Int;
END_VAR
BEGIN
#length := 9;
IF #"Ascending / Dscending" = 0 THEN
FOR #externalIndex := 0 TO #length DO
#min := #externalIndex;
FOR #internalIndex := #externalIndex + 1 TO #length DO
IF #array[#internalIndex] < #array[#min] THEN
#min := #internalIndex;
#temp := #array[#externalIndex];
#array[#externalIndex] := #array[#min];
#array[#min] := #temp;
END_IF;
;
END_FOR;
END_FOR;
ELSE
FOR #externalIndex := 0 TO #length DO
#max := #externalIndex;
FOR #internalIndex := #externalIndex + 1 TO #length DO
IF #array[#internalIndex] > #array[#max] THEN
#max := #internalIndex;
#temp := #array[#externalIndex];
#array[#externalIndex] := #array[#max];
#array[#max] := #temp;
END_IF;
;
END_FOR;
END_FOR;
END_IF;
END_FUNCTION