Определение минимального и максимального значения здесь несколько противоречиво, но, следуя описанию, основная логика может заключаться в том, что минимальное значение может быть определено при обнаружении максимума.
Итак, мы могли бы упорядочить список (несколько сотен строк данных - это не очень много) по убыванию (сначала более высокие значения), оценить максимальное значение и, после этого, определить минимум:
Dim bitmapData = File.ReadAllLines("[Data File Path]").
Select(Function(bd) bd.Split(New String() {" "c}, StringSplitOptions.RemoveEmptyEntries).
Select(Function(n) Integer.Parse(n)).ToArray()).
OrderByDescending(Function(value) value(0)).ToList()
Dim max() As Integer = bitmapData(0)
Dim min() As Integer = {bitmapData(0)(0), 0}
For i As Integer = 1 To bitmapData.Count - 1
If bitmapData(i)(1) > max(1) Then
If bitmapData(i + 1)(0) < bitmapData(i)(0) Then
max = bitmapData(i)
End If
ElseIf bitmapData(i)(0) < max(0) Then
If bitmapData(i)(1) >= min(1) Then
min = bitmapData(i)
End If
End If
Next
Используя ваш образец данных и массив значений для сравнения, получим следующие результаты:
Min ( 1030, 251) Min ( 1000, 80)
Max (10001, 260) Max (10005, 200)
--------------------------------------------
0 1 0 1
10001 260 1000 80
1000 80 10004 2
10004 2 10005 200
10005 200 10006 2
10006 2 1002 73
1002 73 105 10
105 10
50 250
51 220
1026 201
1030 251
1031 250
10009 252
10008 250
10007 251
Предполагая, что источник данных представлен двумя разными массивами (названными Pixels
и Counts
, здесь), которые должны быть синхронизированы (парные индексированные значения), вам просто нужно заменить массив BitmapData
намассив Pixels
и Counts
:
Dim Pixels As Integer() = [Integer Source]
Dim Counts As Integer() = [Integer Source]
Dim max() As Integer = {Pixels(0), Counts(0)}
Dim min() As Integer = {Pixels(0), 0}
For i As Integer = 1 To Pixels.Count - 1
If Counts(i) > max(1) Then
If Pixels(i + 1) < Pixels(i) Then
max = {Pixels(i), Counts(i)}
End If
ElseIf Pixels(i) < max(0) Then
If Counts(i) >= min(1) Then
min = {Pixels(i), Counts(i)}
End If
End If
Next