Setřídění 2 jednorozměrných polí   zodpovězená otázka

VB.NET

Dobrý den,

rád bych se zeptal jakým způsobem setřídit 2 jednorozměrná pole. Prvni je pole s datumy (date) a druhé je pole s hodnotami (single). Potřebuji setřídit vzestupně pole s datumy tak, aby se s ním zároveň setřídilo i pole s hodnotami, protože každému prvku v datumovém poli odpovídá prvek v poli s hodnotami se shodným indexem.

Prozatím jsem si pro tyto účely naprogramoval proceduru využívající BubbleSort a kdykoliv dojde k přehození prvků v datumovém poli, přehodí se i příslušné prvky v poli s hodnotami. Nicméně se chci zeptat, zda neexistuje nějaké rychlejší a elegantnější řešení.

Předem díky za jakékoliv nakopnutí.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud to musí být za každou cenu ve dvou polích, kde datum bude představovat klíč a číslo hodnotu, potom můžete použít toto:

Dim keys = New Date() {Date.Now, New Date(2009, 1, 1), New Date(2011, 1, 1)}
Dim items = New Single() {2, 1, 3}
Array.Sort(keys, items)
'Původně: Po seřazení:
'2010, 2  2009, 1
'2009, 1  2010, 2
'2011, 3  2011, 3

Jinak by bylo lepší vytvořit strukturu se členy pro datum a hodnotu, naplnit jí jedno pole a seřadit pomocí stejné metody s využitím vlastního porovnávače (třída implementující rozhraní IComparer).

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Díky moc za radu.

Za každou cenu to ve dvou polích být nemusí a myslím, že pokud to budu mít ve struktuře tak se mi s tím bude následně i lépe pracovat. Každopádně mi Vámi nabízené způsoby setřídění příjdou lepší než můj bubblesort a s největší pravděpodobností budou i rychlejší.

S pozdravem

Hellis

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback