algorytm.org

Implementacja w C#

Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Sortowanie przez wstawianie (insertionsort) - Implementacja w C#
Ocena użytkownikóww: *****  / 12
SłabyŚwietny
Nadesłany przez kris, 21 marca 2011 19:02
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

InsertionSort/Program.cs:
// Sortowanie przez wstawianie (insertionsort)
// www.algorytm.org

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

namespace InsertionSort
{
    class Program
    {
        static int sprawdzenie(string liczba)
        {
            int ilosc_liczb;

            while (!Int32.TryParse(liczba, out ilosc_liczb) || liczba.ElementAt(0) == '-')  // Sprawdz czy wpisany znak jest liczbą oraz czy jest to liczba dodatnia
            {
                Console.Write("Podaj ilość liczb do posortowania: ");
                liczba = Console.ReadLine();
            }

            return ilosc_liczb;
        }

        static void Main(string[] args)
        {
            int ilosc_liczb, element, bufor;
            string liczba = "nic";

            Random randomizer = new Random();

            ilosc_liczb = sprawdzenie(liczba);

            int[] do_posortowania = new int[ilosc_liczb];                                   // Deklaracja dwóch tablic zawierające elementy do posortowania 
            int[] posortowane = new int[ilosc_liczb];                                       // oraz elementy posortowane

            Console.WriteLine("");

            for (int i = 0; i < ilosc_liczb; i++)                                           // Wypełnienei tablicy do posortowania liczbami losowymi 
            {
                element = randomizer.Next(101);                                             // za zakresu 0 - 100 
                do_posortowania[i] = element;
                Console.Write(do_posortowania[i] + " ");                                    // oraz wyświetlenie wyniku na ekranie
            }

            Console.WriteLine("");
            posortowane[0] = do_posortowania[0];                                            // przepisanie elementu pierwszego do tablicy posortowanej 
                                                                                            // w myśl algorytmu 
                for (int i = 1; i < ilosc_liczb; i++)                                       // Algorytm sortowania przewz wstawienie 
                {
                    for (int j = i; j > 0; j--)
                    {

                        if (posortowane[j - 1] > do_posortowania[i])                        // Sprawdz czy dany element tablicy nieposortowanej jest mniejszy  
                        {                                                                   // od elementów tablicy posortowanej. Jeśli tak to zamień elementy 
                            bufor = posortowane[j - 1];                                     // miejscami. 
                            posortowane[j - 1] = do_posortowania[i];
                            posortowane[j] = bufor;
                        }
                        else
                        {
                            posortowane[j] = do_posortowania[i];                            // Jeśli nie to zapisz daną liczbe na ostanim wolnym miejscu w tablicy posortowanej
                            break;
                        }
                    }
                }

                Console.WriteLine("Posortowane liczby:");

                for (int i = 0; i < ilosc_liczb; i++)                                       // Wyświetlenie tablicy posortwanej.
                {
                    Console.Write(posortowane[i] + " ");
                }
                Console.Read();
        }
    }
}
Dodaj komentarz