Gollum Skrevet 18. oktober 2005 Del Skrevet 18. oktober 2005 Hvordan kan man best lage en kode som sorterer tall i stigende rekkefølge? Jeg har klart en grei løsning på det føler jeg men der er det bare 4 tall som er i bildet. Og koden ser forøvrig kanskje hårete ut. Noen forslag til forbedringer eller hvordan jeg skal skrive koden? Du har fått endel forslag nå ser jeg, men slenger med mitt også. Her er en måte å gjøre det på. Denne leser inn 20 verdier og sorterer disse. endre der det står 20 (4 steder) for å endre antallet. // Sortere 20 verdier #include <iostream.h> int main() { int Tab[20]; int I, Ombytt, Gjem; // Inntasting av verdier for(I=0; I<20; I++) { cout << "\nTast inn verdi " << I+1 << ": "; cin >> Tab[I]; cin.ignore(); } // Sortering do { Ombytt=0; for(I=0; I<19; I++) if(Tab[I] > Tab[I+1]) { Gjem=Tab[I]; Tab[I]=Tab[I+1]; Tab[I+1]=Gjem; Ombytt=1; } } while(Ombytt); // Utskrift cout << "\n\nDen ordnede lista er :\n"; for(I=0; I<20; I++) cout << " " << Tab[I]; return 0; } Lenke til kommentar
Klette Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 (endret) ... Kunne du ha utdypet noe om disse teknikkene? Nazgul: Bare for å rante litt videre , virker det som om koden min er kjappere på veldig tilfeldige tall. Din vinner helt klart når det er litt mer sammenheng mellom tallene dog. Har også kuttet ned kodenminlitt og spart noen cycles på det Paster koden i morgen for de som bryr seg (ingen? ) Endret 19. oktober 2005 av Klette Lenke til kommentar
don_Vito Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 (endret) Kunne du ha utdypet noe om disse teknikkene? Ligger masse informasjon om dette ute på nettet. http://aitel.hist.no/fag/alm/lukket/lek03/lek03.pdf (dansk)(JAVA)http://www.uv.tietgen.dk/edb/laerer/dm1/dm994/syskonst/JAVA/Sortering.htm http://en.wikipedia.org/wiki/Sorting_algorithm http://en.wikipedia.org/wiki/Mergesort http://en.wikipedia.org/wiki/Bubblesort http://en.wikipedia.org/wiki/Quicksort Mange gode artikler på Wikipedia om temaet, der finner du også en del kode. Endret 19. oktober 2005 av don_Vito Lenke til kommentar
Dead_Rabbit Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 (endret) Forresten, her er resultatene mine Med denne koden, #include <iostream> #include <string> #include <vector> #include <algorithm> #include <ctime> using namespace std; template <class T> void sortc(vector<T>&); int main() { vector<int> numbers; numbers.push_back(3); numbers.push_back(5); numbers.push_back(2); numbers.push_back(4); numbers.push_back(1); cout << "Data to sort: \n"; for(vector<int>::const_iterator it = numbers.begin(); it!=numbers.end(); it++) cout << (*it) << " "; cout << endl; cout << "Sorting... \n"; sortc(numbers); for(vector<int>::const_iterator it = numbers.begin(); it!=numbers.end(); it++) cout << (*it) << " "; cout << endl; return 0; } template <class T> void sortc(vector<T>& con) { for(int j = con.size()-1; j !=0; --j) { for(int i = con.size()-1; i !=0; --i) if(con[i] < con[i-1]) swap(con[i], con[i-1]); } } ... fikk jeg dette når jeg kjører programmet med time.. $ time ./sorterData to sort: 3 5 2 4 1 Sorting... 3 5 2 4 1 real 0m0.003s user 0m0.001s sys 0m0.002s På Gentoo'en min. Endret 19. oktober 2005 av zirener Lenke til kommentar
Peter Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 Du må ha med at den skal gjøre sorteringen 500 000 ganger Litt usikker på hvordan Klette gjorde det andre gangen, tror det var med 2000 tall. Lenke til kommentar
Dead_Rabbit Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 (endret) Hvordan gjorde du det, Klette? Edit: Testa med 2000 og 500000 nå: //... int main() { vector<int> numbers; int num; srand(time(0)); for(int i = 0; i != 2000; i++) numbers.push_back(rand()); //osv. og fikk $ time ./sort(...) real 0m0.396s user 0m0.395s sys 0m0.001s Edit: Slik Endret 19. oktober 2005 av zirener Lenke til kommentar
Klette Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 Vel, bare ta med 2000 verdier du.. VI kan sikkert øke det om ønskelig. Kompileringer skal gjøres _uten_ optimaliseringer! dvs default gcc values... Vet ikke hvordan dette er på ms sin kompilator. Lenke til kommentar
Dead_Rabbit Skrevet 19. oktober 2005 Del Skrevet 19. oktober 2005 (endret) Okay.. Da skal ting stemme Endret 19. oktober 2005 av zirener Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå