How to rearrange an array and set arr[arr[index]] to index in VB.NET

1 Answer

0 votes
Imports System

Public Class Program
    Public Shared Sub rearrange_array(ByVal arr As Integer())
        Dim tmp As Integer() = New Integer(arr.Length - 1) {}

        For i As Integer = 0 To arr.Length - 1
            tmp(arr(i)) = i
        Next

        For i As Integer = 0 To arr.Length - 1
            arr(i) = tmp(i)
        Next
    End Sub

    Public Shared Sub Main(ByVal args As String())
        Dim arr As Integer() = New Integer() {3, 1, 0, 4, 5, 2}

		' arr[arr[0]] = 3 -> arr[3] = 0
		' arr[arr[1]] = 1 -> arr[1] = 1
		' arr[arr[2]] = 0 -> arr[0] = 2
		' arr[arr[3]] = 4 -> arr[4] = 3
		' arr[arr[4]] = 5 -> arr[5] = 4
		' arr[arr[5]] = 2 -> arr[2] = 5

        rearrange_array(arr)

        Console.WriteLine(String.Join(" ", arr))
    End Sub
End Class





' run:
'
' 2 1 5 0 3 4
'

 



answered Aug 16, 2022 by avibootz
...