![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
Ma ktoś z Was algorytm sortowania przez selekcje w C. Byłbym bardzo wdzięczny za pomoc.
|
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 109 Pomógł: 0 Dołączył: 7.03.2004 Skąd: Szczecin|Bukowe Ostrzeżenie: (0%) ![]() ![]() |
Mam tu definicje tego algorytmu, jak troch pomyslisz powinieneś go zakodować;)
Kod Metoda ta nazywana jest sortowaniem przez wymianę gdyż na początku szukany jest najmniejszy element, po znalezieniu go jest on zamieniany z pierwszym elementem tablicy.
Następnie szukany jest znów najmniejszy element, ale począwszy od elementu drugiego (pierwszy - najmniejszy jest już wstawiony na odpowiednie miejsce), po jego znalezieniu jest on zamieniany z drugim elementem. Czynność tą powtarzamy kolejno na elementach od trzeciego, czwartego, aż do n-tego. -------------------- "Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++ [b]Programowanie: llllll 40% |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
ja znalazłem troche inną definicje sortowania przez selekcje:
mamy przykładową liste 1 6 3 5 4 Wybieramy skrajny element, powiedzmy maksimum (6) i przepinamy ten element do nowej listy. 1 3 5 4 6 Po przepięciu, wybieramy kolejne maksimum pierwszej listy i znowu przepinamy do drugiej. Ponieważ wybraliśmy maksimum musimy elementy przepinać zawsze na początek nowej listy. Jak wzięlibyśmy minima to byśmy ustawiali na końcu. Byśmy potrzebowali wtedy dodatkowego wkaźnika na koniec listy. 1 3 4 5 6 Tak sobie przepinamy te maksima, aż pierwsza lista zostanie pusta. 1 3 4 5 6 Wtedy przepinamy pierwszą liste tak, że pierwsza lista jest posortowana. metody te troszkę się od siebie różnią . Jedna kożysta z jednej listy, druga z dwóch. I którą z tych metod można uznać za "sortowanie przez selekcje"? Czy oby dwie metody się kwalifikują do takiego rodzaju sortowania? |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 109 Pomógł: 0 Dołączył: 7.03.2004 Skąd: Szczecin|Bukowe Ostrzeżenie: (0%) ![]() ![]() |
Tutaj masz gotowy kod sortowania prez selekcje napisany w C++:
Kod #include <stdio.h>
#include <conio.h> #include <stdlib.h> void selectionsort(int tablica[10], int ile_liczb) { int min,i,j,temp; for (i=0;i<ile_liczb-1;i++) { min=i; for (j=i+1;j<ile_liczb;j++) if (tablica[j]<tablica[min]) min=j; temp=tablica[min]; tablica[min]=tablica[i]; tablica[i]=temp; } printf("nTablica po posortowaniu:"); for(i=0; i<ile_liczb; i++) printf("n%i",tablica[i]); } void main(void) { int ile_liczb,i,liczba; int tablica[10]; clrscr(); printf("Ile liczb chesz posortowac (do 10) ? "); scanf("%i",&ile_liczb); for(i=0; i<ile_liczb; i++) { printf("Wprowadz liczbe #%i: ",i+1); scanf("%i",&liczba); tablica[i]=liczba; } clrscr(); printf("Tablica przed posortowaniem:"); for(i=0; i<ile_liczb; i++) printf("n%i",tablica[i]); selectionsort(tablica,ile_liczb); printf("nDowolny klawisz..."); getch(); } Jednak jeśli chodzi o mnie uzywam w C++ innego sortowania, a mianowicie "sortowania babelkowego" tutaj masz kod: Kod #include <iostream>
#include <stdlib.h> int main() { int i,k,j; int tablica[] = {40, 2, 5, 18, 20, 16, 4}; for(i=1; i=7; i++) for(j=6; j>=i; j--) if (tablica[j]<tablica[j-1]) { k=tablica[j-1]; tablica[j-1]=tablica[j]; tablica[j]=k; } for(i=0; i<7; i++) { cout << tablica[i]; } system("PAUSE"); return 0; } W tym kodzie moze byc jakis błąd ![]() -------------------- "Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++ [b]Programowanie: llllll 40% |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 238 Pomógł: 1 Dołączył: 27.08.2003 Ostrzeżenie: (0%) ![]() ![]() |
mółbyś wytłumaczyć do czego służą funkcje getch() oraz clrscr();
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 109 Pomógł: 0 Dołączył: 7.03.2004 Skąd: Szczecin|Bukowe Ostrzeżenie: (0%) ![]() ![]() |
Gunkcje clrscr(); usuń, jest niepotrzebna, natomiast funkcja getch() pobiera stan klaisza na klawiaturze;)Czyli jak wciśniesz jakiś przyccik to ona to pobiera i kończy działanie programu;)
-------------------- "Unix is like a vigvam - no windows, no gates, Apache inside"
Warsztat: Windows XP PE | Dreamweaver | Apache 1.3.29 | PHP 4.3.4 | Araneae | MYSQL 4 | Visual Studio | Dev-C++ [b]Programowanie: llllll 40% |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 19:27 |