C# Sortowanie liczb

0

Witam jestem początkujacy i mam problem mam tu sortowanie bąbelkowe i nie wime jak wyswietlic wynik wtawiam część kodu

 int[] tab = new int[zakres];
            for (int i = 0; i < zakres; i++)
            {
                liczba = Generator.Next(101);
                tab[i] = liczba;
                Console.Write(tab[i] + " ");
            }
            sort = Sortowanie(tab, zakres);
            Console.WriteLine("wynik" + sort);
        }
            public static int Sortowanie(int[] tab, int zakres, int bufor)
            {
            for (int i = 0; i < zakres - 1; i++)
            {
                for (int j = 0; j < zakres - 1; j++)
                {
                    if (tab[j] > tab[j + 1])
                    {
                        bufor = tab[j];
                        tab[j] = tab[j + 1];
                        tab[j + 1] = bufor;
                    }
                    
                }
            }
0

Sortowanie nic nie zwraca, powinieneś zwrócić posortowaną tablicę albo nic. Jeżeli chcesz wyświetlić posortowaną tablicę, to po prostu w pętli wyświetl jej wszystkie elementy już po sortowaniu.

0

a jak ja zwrócić ?

1

Na dobra sprawę w tym przypadku nie trzeba nic zwracać wystarczy:

public static void Sortowanie(int[] tab, int zakres, int bufor)
{
  // sortuje
}

Wyjaśnienie czemu: http://msdn.microsoft.com/en-us/library/hyfeyz71%28v=vs.80%29.aspx

// Wyswietlanie

foreach (int liczba in tab)
                Console.WriteLine(liczba);

Ale jak by zaszła potrzeba zwrócenia to powinno wygladac to tak:

public static int[] Sortowanie(int[] tab, int zakres, int bufor)
{
 // sortuje
 return tab;
}
0

Chodzi ale nie sortuje wyświetla tablicę tych liczb co zostały wylosowane

   int[] tab = new int[zakres];
            for (int i = 0; i < zakres; i++)
            {
                liczba = Generator.Next(101);
                tab[i] = liczba;
                Console.Write(tab[i] + " ");
            }
            Console.WriteLine("\n");

            foreach (int sort in tab)
            
                Console.WriteLine(sort);
            
            Console.ReadLine();
        }
      
        public static void Sortowanie(int[] tab, int zakres, int bufor)
        {
            for (int i = 0; i < zakres - 1; i++)
            {
                for (int j = 0; j < zakres - 1; j++)
                {
                    if (tab[j] > tab[j + 1])
                    {
                        bufor = tab[j];
                        tab[j] = tab[j + 1];
                        tab[j + 1] = bufor;
                    }
                  
               
                }
              
            }

a jeśli chodzi o ten drugi sposób żeby zwracało to mam takie błędy

-No overload for method 'Sortowanie' takes '2' arguments (przeciążenie metody sortowanie )
-'Sortowanie_babelkowe.Program.Sortowanie(int[], int, int)': not all code paths return a value

            int[] tab = new int[zakres];
            for (int i = 0; i < zakres; i++)
            {
                liczba = Generator.Next(101);
                tab[i] = liczba;
                Console.Write(tab[i] + " ");
            }
            Console.WriteLine("\n");

            sort = Sortowanie(tab, zakres);
            Console.WriteLine("wynik" + sort);
            
            Console.ReadLine();
        }

        public static int[] Sortowanie(int[] tab, int zakres, int bufor)
        {
            for (int i = 0; i < zakres - 1; i++)
            {
                for (int j = 0; j < zakres - 1; j++)
                {
                    if (tab[j] > tab[j + 1])
                    {
                        bufor = tab[j];
                        tab[j] = tab[j + 1];
                        tab[j + 1] = bufor;
                    }

                    
                }
                return tab; 
            }
0

1.Funkcja wymaga trzech argumentów, a Ty podajesz dwie (dodatkowo ten trzeci argument powinien być zmienną lokalną, a nie parametrem...).
2.Niezadeklarowana zmienna sort.
3.Co według Ciebie ma wyświetlać to: Console.WriteLine("wynik" + sort);? :|
Sugeruję zacząć od podstaw-podstaw.

0

Właśnie zaczynam ale nic nie zrobię ze mam takie zadanie do zrobienia wrzucę całe zadanie będzie łatwiej

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

namespace Sortowanie
{
    class Program
    {


        static void Main(string[] args)
        {

           
            Random Generator;
            int zakres, liczba, sort ,temp ;
            string liczba1;
            

            Generator = new Random(); ;
            Console.Write("Podaj ilość liczb do posortowania: ");
            liczba1 = Console.ReadLine();
            zakres = Int32.Parse(liczba1);

            int[] tab = new int[zakres];
            for (int i = 0; i < zakres; i++)
            {
                liczba = Generator.Next(101);
                tab[i] = liczba;
                Console.Write(tab[i] + " ");
            }
            Console.WriteLine("\n");

            sort = Sortowanie(tab, zakres ,bufor );
            Console.WriteLine("po" + sort);
            
            sort=Sortowanie1(tab ,temp);
            Console.WriteLine("po " + sort);
            
            Console.ReadLine();
        }

        public static int[] Sortowanie(int[] tab, int zakres, int bufor)
        {
           
            //sort
        }
        
}
1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Sortowanie
{
    class Program
    {
        static void Main(string[] args)
        {
            Random rand = new Random();
            Console.WriteLine("Podaj wielkość tablicy:");
            int wielkosc = int.Parse(Console.ReadLine());

            int[] tablica = new int[wielkosc];

            Console.WriteLine("\nTablica przed sortowaniem");

            for (int i = 0; i < tablica.Length; i++)
            {
                tablica[i] = rand.Next(101);
                Console.Write(tablica[i] + ", ");
            }

            Sortowanie(tablica);

            Console.WriteLine("\nTablica posortowana:");

            foreach(int liczba in tablica)
                Console.Write(liczba + ", ");

            Console.ReadKey();
        }

        public static void Sortowanie(int[] tablica)
        {
            for (int j = 1; j < tablica.Length; j++)
                for (int i = 0; i < tablica.Length - 1; i++)
                    if (tablica[i] > tablica[i + 1])
                    {
                        int tmp = tablica[i];
                        tablica[i] = tablica[i + 1];
                        tablica[i + 1] = tmp;
                    }
        }
    }
}
0

dzięki już troche rozumiem a jesli chciałbym obliczyć czas
to ma paczątku deklaruję stop start ale gdzie pozniej umiescic resztę ?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
namespace Sortowanie
{
    class Program
    {
        static void Main(string[] args)
        {
           
             DateTime Start;
            DateTime Stop;
            TimeSpan Interwał;
            long CzasObliczeń;

 Random rand = new Random();
            Console.WriteLine("Podaj wielkość tablicy:");
            int wielkosc = int.Parse(Console.ReadLine());
 
            int[] tablica = new int[wielkosc];
 
            Console.WriteLine("\nTablica przed sortowaniem");
 
            for (int i = 0; i < tablica.Length; i++)
            {
                tablica[i] = rand.Next(101);
                Console.Write(tablica[i] + ", ");
            }
 
            Sortowanie(tablica);
 
            Console.WriteLine("\nTablica posortowana:");
 
            foreach(int liczba in tablica)
                Console.Write(liczba + ", ");
 
            Console.ReadKey();
        }
 
        public static void Sortowanie(int[] tablica)
        {
          
           //CzasObliczeń = 0;
         //   Start = DateTime.Now;
           

  //sort
              


// Stop = DateTime.Now;
            //    Interwał = Stop - Start;
             //   CzasObliczeń = Interwał.Ticks;

 }
    }
}
1

[c#] Jak zmierzyc czas wykonania fragmentu kodu

public static void Sortowanie(int[] tablica)
        {
            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();
            
            for (int j = 1; j < tablica.Length; j++)
                for (int i = 0; i < tablica.Length - j; i++)
                    if (tablica[i] > tablica[i + 1])
                    {
                        int tmp = tablica[i];
                        tablica[i] = tablica[i + 1];
                        tablica[i + 1] = tmp;
                    }

            stopWatch.Stop();
            Console.WriteLine("\nCzas sortowania czas: " + stopWatch.Elapsed);
            Console.WriteLine("Czas sortowania ilość taktów zegara: " + stopWatch.ElapsedTicks);
        }
0

jest błąd

The type or namespace name 'Stopwatch' could not be found (are you missing a using directive or an assembly reference?)

a to co ja zamiesciłem da sie jakos odpalić ?

public static void Sortowanie(int[] tablica)
      {
            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();
 
         //sort
 
            stopWatch.Stop();
            Console.WriteLine("\nCzas sortowania czas: " + stopWatch.Elapsed);
            Console.WriteLine("Czas sortowania ilość taktów zegara: " + stopWatch.ElapsedTicks);
        }
0

ok tylko teraz takie pytanie wyświetla mi 2 razy czas sortowania i każdy inny dlaczego 2 razy ?

        public static void Sortowanie(int[] tablica)
        {
            Stopwatch stopWatch = new Stopwatch();
            stopWatch.Start();

            //sortuje
                    }

            stopWatch.Stop();

            Console.WriteLine("\nCzas sortowania czas: " + stopWatch.Elapsed);

        }

1 użytkowników online, w tym zalogowanych: 0, gości: 1