class MidSort(private val SIZE:Int=251) {
private var index = 0
private var medIndex=SIZE shr 1
private val data=IntArray(SIZE)
private val dataFlag=BooleanArray(SIZE){
it<medIndex
}
private var medValue = 0
fun init(v:Int):Int{
data[index]=v
if (dataFlag[index]) {
if (v < medValue) {
dataFlag[index] = false
dataFlag[medIndex] = true
medValue = v
medIndex = index
data.forEachIndexed { i, v ->
if (dataFlag[i].not() && v > medValue) {
medIndex = i
medValue = v
}
}
}
} else {
if (v > medValue) {
dataFlag[index] = true
medValue = v
medIndex = index
data.forEachIndexed { i, v ->
if (dataFlag[i] && v < medValue) {
medIndex = i
medValue = v
}
}
dataFlag[medIndex] = false
}else if(index == medIndex&&medValue!=v){
medValue = v
data.forEachIndexed { i, v ->
if (dataFlag[i].not() && v > medValue) {
medIndex = i
medValue = v
}
}
}
}
index++
if(index==SIZE){
index=0
}
return medValue
}
}