[C#] sortowanie przez wybieranie

Hania_87
Użytkownik
Użytkownik
Posty: 860
Rejestracja: 18 cze 2007, o 20:57
Płeć: Kobieta
Lokalizacja: Rybnik
Podziękował: 86 razy
Pomógł: 57 razy

[C#] sortowanie przez wybieranie

Post autor: Hania_87 »

program się sypie, bo po sortowaniu na drugim miejscu daje ostatnią liczbę, która zresztą się powtarza, nie wiem gdzie poprawić bład

Kod: Zaznacz cały

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace wybieranie
{
             class Program
    {
        static void Main(string[] args)
        {
            int i, j;
            int[] tab = new int[20];
            Random generator = new Random();
            Console.WriteLine("Przed sortowaniem:");
            for (i = 0; i < 20; i++)
                {
                    tab[i] = generator.Next(100);
                    Console.Write("{0}, ", tab[i]);
                }
            for (i = 0; i < 20; i++)
            {
                int min = tab[i], k = 1;
                for (j = i + 1; j < 20; j++)
                    if (min > tab[j])
                    {
                        min = tab[j];
                        k = j;
                    }
                tab[k] = tab[i];
                tab[i] = min;
            }
            Console.WriteLine("");
            Console.WriteLine("Po sortowaniu:");
            foreach (int k in tab)
                Console.Write("{0} ", k);
            

            Console.ReadKey();
        }
    }
}
Awatar użytkownika
Szemek
Użytkownik
Użytkownik
Posty: 4819
Rejestracja: 10 paź 2006, o 23:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 43 razy
Pomógł: 1407 razy

[C#] sortowanie przez wybieranie

Post autor: Szemek »

zmiana w pętlach odpowiedzialnych za sortowanie:

Kod: Zaznacz cały

    for (i = 0; i < 20; i++)
    {
        int min = i;
        for (j = i + 1; j < 20; j++)
            if (tab[min] > tab[j])
                min = j;
        int temp = tab[min];
        tab[min] = tab[i];
        tab[i] = temp;
    }
Hania_87
Użytkownik
Użytkownik
Posty: 860
Rejestracja: 18 cze 2007, o 20:57
Płeć: Kobieta
Lokalizacja: Rybnik
Podziękował: 86 razy
Pomógł: 57 razy

[C#] sortowanie przez wybieranie

Post autor: Hania_87 »

Kod: Zaznacz cały

int min = tab[i], k = 1;
wystarczy zamienic

Kod: Zaznacz cały

int min = tab[i], k = i;
ODPOWIEDZ