[Gambas-user] Sorting 2D arrays

Fabien Bodard gambas.fr at gmail.com
Wed Aug 26 09:20:18 CEST 2020


Le mer. 26 août 2020 à 08:33, John Rose <john.aaron.rose at mailbox.org> a
écrit :

> All the discussions on this topic have gone way over my knowledge &
> understanding, particularly the discussions on Class. I was wrong about
> Gianluigi's solution (on 24/08/2020, 08:43 digest for
> DinamixMatrixExample project from the farm) not working. Apologies,
> Gianluigi, for doubting you. Once I understood it, I adapted it slightly
> for the key on my 2D array and it worked. I doubt that anyone is
> interested now, but here is my adapted code for the Global variable
> aEpisodeData (defined as Private aEpisodeData As New String[][]):
>
> Procedure SortEpisodeData()' Sort by Series Name & Episode Name i.e.
> column 0
>    Dim e, i, n As Integer
>    Dim aSort, aOriginal As New String[]
>    ' Fills the array of the key to sort
>    For e = 0 To aEpisodeData.Max
>      aOriginal.Push(aEpisodeData[e][0])
>    Next
>    ' Copy the data in the sorting array, then sort
>    aSort = aOriginal.Copy()
>    aSort.Sort()
>    ' Find with "Find" the values to be sorted and' with
>    ' "swap" swaps reversing them
>    For e = 0 To aSort.Max
>      n = aOriginal.Find(aSort[e], 0, e)
>      For i = 0 To aEpisodeData[e].Max
>        Swap aEpisodeData[e][i], aEpisodeData[n][i]
>      Next
>      ' Clean and fill the array with current data
>      aOriginal.Clear()
>      For i = 0 To aEpisodeData.Max
>        aOriginal.Push(aEpisodeData[i][0])
>      Next
>    Next
> End ' SortEpisodeData
>
> where aEpisodeData has previously been populated by:
>      ' All the other variables below are strings previously given values
>      ' Column 0 of aEpisodeData is the key of a row
>      'Columns 1-7 are the data for each row
>      Inc iRows  ' Number of rows in aEpisodeData defined as Integer
>      aEpisodeData.Resize(iRows)
>      aEpisodeData[iRows - 1] = New String[8]
>      aEpisodeData[iRows - 1][0] = sSN30 & "|" & sEN30  ' SN30 & sEN30
> are the first 30 characters of sSeriesName & sEpisodeName respectively
> padded out with spaces
>      aEpisodeData[iRows - 1][1] = sSeriesName
>      aEpisodeData[iRows - 1][2] = sSeriesDescription
>      aEpisodeData[iRows - 1][3] = sEpisodeName
>      aEpisodeData[iRows - 1][4] = sEpisodeNumber
>      aEpisodeData[iRows - 1][5] = sEpisodeDescription
>      aEpisodeData[iRows - 1][6] = sEpisodeDatePublished
>      aEpisodeData[iRows - 1][7] = sEpisodeIdentifier
>


😱

It can work ..but where the benefit ?

I will show you how we do that in the Gambas way.


>
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.gambas-basic.org/pipermail/user/attachments/20200826/5ce2c382/attachment.html>


More information about the User mailing list