sortowanie liczb

0

Witam, oto mój program do sortowania liczb wpisanych przez użytkownika:

#include <iostream>

using namespace std;

int max_ele_indeks(int n, int t[]);
void segregacja(int n, int t[]);

int main()
{
   int ilosc;
   cin >>ilosc;
   int tablica[ilosc];
   for(int j=0; j<ilosc; j++)
   {
      cin >> tablica[j];
   }
    segregacja(ilosc, tablica);
    return 0;
}
//*********************************
int min_ele_indeks(int k, int t[])
{
   int min=0;
   for(int i=1; i<k; i++)
   {
      if(t[min]>t[i])
      min=i;
   }
   return min;
}
//*********************************
void segregacja(int n, int t[])
{
   for(int i=n-1; i>=0; i--)
   {
      int min=min_ele_indeks(i+1, t);
      if(min!=i)
      swap(t[i], t[min]);
      cout <<t[i]<<" ";
   }
}

Da się jakoś skrócić kod tego programu ? Ogólnie, czy program jest dobrze napisany, czy powinienem się go wstydzić ? :)

0

No tablice to ty po mistrzowsku deklarujesz...

0

To powiedz jak mam deklarować

0

Wstydź się ;]
Błędów w Twoim kodzie jest sporo, nie będę wymieniać tylko podam ładniejszą wersję:

#include <iostream>
#include <algorithm>
#include <vector>

using namespace std;
 
int main() {
    vector<int> tablica;
    int ilosc;
    cin >> ilosc;

    for(int j=0; j<ilosc; j++) {
        int i;
        cin >> i;
        tablica.push_back(i);
    }
    sort(tablica.begin(), tablica.end());

    for (int i = 0; i < ilosc ; i++) {
        cout << tablica[i] << (i == ilosc - 1 ? "" : ", ");
    }

    return 0;
}

Ale to też nie jest piękny kod, nie chce mi się kombinować bardziej dzisiaj... Zaraz tu i tak przyjdzie @Endrju czy inny zapaleniec któremu się będzie chciało zrobić z tego kod naprawdę przypominający C++.

0

Tablice dynamiczne
Tablice

BTW. Istnieją szybsze algorytmy sortowania.

0

O krótkim sortowaniu rozmawialiśmy tutaj: sortowanie, parsowanie

:D

1

@msm może być tak? :-P

#include <iostream>
#include <vector>
#include <algorithm>
#include <iterator>
 
int main() {
  std::vector<int> numbers;
 
  std::copy(std::istream_iterator<int>(std::cin),
            std::istream_iterator<int>(),
            std::back_inserter(numbers));
 
  std::sort(numbers.begin(), numbers.end()); 
        
  std::copy(numbers.begin(),
            numbers.end(),
            std::ostream_iterator<int>(std::cout, " "));
 
  return 0;
}
0

Dzięki za odpowiedzi. Co do tego waszego kodu to nie za bardzo go rozumiem bo dopiero od niedawna się uczę ale dzięki za pomoc :) A co do środowiska to nie mam deva bo ponoć przestarzały tylko code::blocks i używam kompilatora gcc.

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