algorytmy
Kaśka: Czy jest ktoś tutaj kto zna się na algorytmach. Mam takie zadanko i nie do końca wiem jak je
zrobić. Liczę na waszą pomoc za którą serdecznie dziękuję. "Zaproponuj wykonanie algorytmu
mergesort tak by wykonać ten algorytm w tablicy bez wychodzenia poza nią."
6 lis 21:58
Blee:
W jakim języku ma być ?
Masz jakikolwiek pomysł jak to zrobić ?
6 lis 21:59
Krzysiu: tablica ma mieć jeden wymiar czy może być dwuwymiarowa?
6 lis 22:02
Kaśka: To ma być po prostu zrobione. Jakiś przykład czy coś w tym stylu. Mam zrobić to na tablicy.
Miałam z tego dopiero jedne zajęcia więc za bardzo pomysłów nie mam
6 lis 22:02
Kaśka: Krzysiu raczej jeden
6 lis 22:02
Blee:
aha ... ma być "po prostu zrobione" −−− no i wszystko jasne
6 lis 22:03
Krzysiu: ja w swoim programie zrobiłem dwuwymiarową xd
6 lis 22:03
Blee:
Miałaś jakieś języki programowania?
Chociaż schemat blokowy był?
Jakie to zajęcia? Na jakim kierunku?
6 lis 22:04
Kaśka: haha
6 lis 22:04
Kaśka: W liceum miałam programowanie w C++, na studiach C. Jest to przedmiot algorytmy i struktury
danych na kierunku matematyka finansowo−ubezpieczeniowa
6 lis 22:05
Blee:
Patrząc na przedmiot −−− zapewne schemat blokowy będzie prowadzącego interesował ... a co było
na tych zajęciach? W jaki sposób zapisywał algorytmy?
6 lis 22:06
Kaśka: Przerobione mieliśmy po jednym przykładzie z każdego sortowania jak na razie. A na następne
zajęcia kazał przygotować takie rzeczy
6 lis 22:08
jc: Oj, obawiam się, że bez straty szybkości to niemożliwe. Dobrze mieć przynajmniej połowę
tablicy dodatkowo.
Widziałem kiedyś algorytm sortowania przez sklejanie pracujący w miejscu.
Teoretycznie miał chyba złożoność n (ln n)2, ale nie wiem czemu działał szybciej.
6 lis 22:10
Blee:
No i w jaki sposób ZAPISAŁ te sortowania?
W jakimś języku (C, C++)? Schematem blokowym? Słownie? Pokazał na pacynkach?
6 lis 22:11
Kaśka: No nic to dziękuję za szczere chęci Wam. Jesteście kochani
6 lis 22:11
Kaśka: pokazał tablice. I ją posortował
6 lis 22:12
Blee:
Kasiu −−− algorytm możemy podać ... nie będą zapewne najbardziej eleganckie algorytmy, a na
pewno nie będą one najefektywniejsze ... ale będą
tylko nadal nie wiemy (od Ciebie nie mogę tego wyciągnąć) W JAKIEJ FORMIE ma ów algorytm być
przedstawiony.
6 lis 22:13
Blee:
no dobra ... czyli de facto masz po prostu zaprezentować JAK DZIAŁA TEN ALGORYTM i nic ponad to
6 lis 22:15
Kaśka: Na przykładzie można to zrobić?
6 lis 22:15
jc: Znalazłem
/* sortowanie przez sklejanie w miejscu, czas = n (ln n)
2 */
#include<stdio.h>
void sklej(int *p, int *s, int *k)
{
if( p<s && s<k )
{
int *r, *q, *i, *j;
for( r=s, q=s; p<r && q<k && *(r−1)>*q; r−−, q++);
for( i=r, j=s; i<s; i++, j++)
{
int t=*i;
*i=*j;
*j=t;
}
sklej(p,r,s);
sklej(s,q,k);
}
}
void sortuj(int *p, int *k)
{
if( p<k−1 )
{
int *s;
s=p+(k−p)/2;
sortuj(p,s);
sortuj(s,k);
sklej(p,s,k);
}
}
int main()
{
int i;
int t[20]={2,5,7,1,9,2,0,2,12,4,13,9,11,45,54,8,9,10,2,10};
for( i=0; i<20; i++) printf("%3d", t[i]);
printf("\n");
sortuj(t,t+20);
for( i=0; i<20; i++) printf("%3d", t[i]);
printf("\n");
return 0;
}
6 lis 22:16