<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Forum Pasja Informatyki - Najnowsze z tagiem sortowania</title>
<link>https://forum.pasja-informatyki.pl/tag/sortowania</link>
<description>Powered by Question2Answer</description>
<item>
<title>Problem flagi - lista C</title>
<link>https://forum.pasja-informatyki.pl/543800/problem-flagi-lista-c</link>
<description>

&lt;p&gt;A więc muszę stworzyć program, który posortuje mi np: RRBWWBWBR według kolejności flagi holenderskiej, czyli na RRRWWWBBB.&lt;/p&gt;



&lt;p&gt;Pomysł na to mam taki aby podzielić jedną listę na 3 do każdej wpakować jedną grupę a następnie wyzerować główną listę i&amp;nbsp;tam wrzucić to w dobrej kolejności.&amp;nbsp;&lt;/p&gt;



&lt;p&gt;Niestety po&amp;nbsp;wrzuceniu do list danych, kiedy próbuję ją wyświetlić listę nic się nie dzieje.&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;

//struktura danych
typedef struct node {
  struct node *next;
  char* data;
} node_t;

//dodawanie elementu do listy
void push_top(node_t **head, char* data){
   node_t *current;
   current = (node_t *)malloc(sizeof(node_t));

   current-&amp;gt;data = strcpy(malloc(strlen(data) + 1), data);
   current-&amp;gt;next=(*head);
   *head=current;
}

//wyświetlanie listy
void show(node_t *head){
   node_t *current=head;

   while (current != NULL){
      printf(&quot;%s\n&quot;, current-&amp;gt;data);
      current = current-&amp;gt;next;
   }
}

//podzielenie listy na 3 listy 
void sort(node_t **head){ //w tej funkcji jest poroblem!
  node_t *current = *head;
  //Stworzenie 3 list
  node_t *left = (node_t *)malloc(sizeof(node_t));
  node_t *right = (node_t *)malloc(sizeof(node_t));
  node_t *center = (node_t *)malloc(sizeof(node_t));

  while(current != NULL){
    if(current -&amp;gt; data == &quot;R&quot;){
      push_top(&amp;amp;left, current -&amp;gt; data);
    }else if(current -&amp;gt; data == &quot;W&quot;){
      push_top(&amp;amp;center, current -&amp;gt; data);
    }else if(current -&amp;gt; data == &quot;B&quot;){
      push_top(&amp;amp;right, current -&amp;gt; data);
    }

    current = current -&amp;gt; next;
  }

  //show(left);

}

int main(){
  node_t *head;
  head = (node_t *)malloc(sizeof(node_t));
  head=NULL;
  

  //dodawnie kolorów do listy
  push_top(&amp;amp;head, &quot;R&quot;);
  push_top(&amp;amp;head, &quot;R&quot;);
  push_top(&amp;amp;head, &quot;R&quot;);

  push_top(&amp;amp;head, &quot;W&quot;);
  push_top(&amp;amp;head, &quot;W&quot;);
  push_top(&amp;amp;head, &quot;W&quot;);

  push_top(&amp;amp;head, &quot;B&quot;);
  push_top(&amp;amp;head, &quot;B&quot;);
  push_top(&amp;amp;head, &quot;B&quot;);

  sort(&amp;amp;head);

  //show(head);

  return 0;
}&lt;/pre&gt;



&lt;p&gt;Z góry dziękuję za jakąkolwiek pomoc.&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/543800/problem-flagi-lista-c</guid>
<pubDate>Mon, 14 Jun 2021 19:44:45 +0000</pubDate>
</item>
<item>
<title>Problem ze zrobieniem przycisku sortowania</title>
<link>https://forum.pasja-informatyki.pl/485371/problem-ze-zrobieniem-przycisku-sortowania</link>
<description>

&lt;pre class=&quot;brush:xml;&quot;&gt;
&amp;lt;form action=&quot;&amp;lt;?php echo $_SERVER['PHP_SELF']; ?&amp;gt;&quot; method=&quot;GET&quot;&amp;gt;
    &amp;lt;select name=&quot;order&quot;&amp;gt;
       &amp;lt;option value=' data_wpisow ASC'&amp;gt; Data ROSN.&amp;lt;/option&amp;gt;
       &amp;lt;option value=' data_wpisow DESC'&amp;gt; Data MALEJ.&amp;lt;/option&amp;gt;
       &amp;lt;option value=' naglowek_wpisu ASC'&amp;gt; Wpisy ROSN.&amp;lt;/option&amp;gt;
       &amp;lt;option value=' naglowek_wpisu DESC'&amp;gt; Wpisy MALEJ.&amp;lt;/option&amp;gt;
    &amp;lt;/select&amp;gt;
   &amp;lt;button type=&quot;submit&quot;&amp;gt;Sortuj&amp;lt;/button&amp;gt;
&amp;lt;/form&amp;gt;&lt;/pre&gt;



&lt;pre class=&quot;brush:php;&quot;&gt;
$order = &quot;SELECT * FROM wpisy ORDER BY&quot;;
if(isset($_REQUEST['order'])) {
    $order .= $_REQUEST['order'];
}
else {
    $order .= 'data_wpisow DESC';
}

$tw = mysqli_query($conn, $order);

        while ($row = mysqli_fetch_assoc($tw)) {
.....
}&lt;/pre&gt;



&lt;p&gt;Szukałem różnych przykładów, ale nie mogę znaleźć nic konkretnego.&lt;/p&gt;



&lt;p&gt;Mam stronke w php ktora tworzy kolejne divy-&amp;gt;okienka(wpisy), zrobiłem sortowanie wg daty_wpisu, nazwy_wpisu, treści wpisu, ale chce zrobić przełącznik (przycisk) zmieniający sortowanie. Próbuje to zrobić tak jak wyżej, ale nie działa. Zapytanie jest generowane poprawnie, strona działa, ale nie wyświetla nowego sortowania po naciśnięciu.&lt;/p&gt;



&lt;p&gt;Problem jest w linii: while ($row = mysqli_fetch_assoc($tw)) która wyświetla notice:&lt;/p&gt;



&lt;p&gt;mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in /var/www/html/...&lt;/p&gt;



&lt;p&gt;Sporo już próbowałem. Proszę o radę, ew. inną technologię, ktora zrobi taki działający select/przycisk sortowania.&lt;/p&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;font-size:14px&quot;&gt;&lt;strong&gt;PROBLEM ROZWIĄZANY&lt;/strong&gt;&lt;/span&gt; dałem coś takiego pod zapytanie &lt;span style=&quot;font-family:Whitney,&amp;quot;Helvetica Neue&amp;quot;,Helvetica,Arial,sans-serif; font-size:16px&quot;&gt;$tw:&amp;nbsp;&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;font-family:Whitney,&amp;quot;Helvetica Neue&amp;quot;,Helvetica,Arial,sans-serif; font-size:16px&quot;&gt;if (mysqli_connect_errno()) { printf(&quot;Connect failed: %s\n&quot;, mysqli_connect_error()); exit(); }&amp;nbsp;&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;bledu nie wyswietlilo&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;font-family:Whitney,&amp;quot;Helvetica Neue&amp;quot;,Helvetica,Arial,sans-serif; font-size:16px&quot;&gt;zmieniłem metode na POST&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;font-family:Whitney,&amp;quot;Helvetica Neue&amp;quot;,Helvetica,Arial,sans-serif; font-size:16px&quot;&gt;i z ciekawości dałem w tym miejscu dwie spacje zamiast jednej: &lt;/span&gt;&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;font-family:Whitney,&amp;quot;Helvetica Neue&amp;quot;,Helvetica,Arial,sans-serif; font-size:16px&quot;&gt;$order = &quot;SELECT * FROM wpisy&amp;nbsp; ORDER BY&quot;&lt;/span&gt;&lt;/p&gt;



&lt;p&gt;&lt;span style=&quot;font-family:Whitney,&amp;quot;Helvetica Neue&amp;quot;,Helvetica,Arial,sans-serif; font-size:16px&quot;&gt;Nie do końca rozumiem co to zmieniło, ale zaczeło działać. &lt;/span&gt;&lt;/p&gt;</description>
<category>PHP</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/485371/problem-ze-zrobieniem-przycisku-sortowania</guid>
<pubDate>Wed, 29 Apr 2020 15:31:30 +0000</pubDate>
</item>
<item>
<title>Czasy wykonywania algorytmu sortowań różnią się poprzez CodeBlocksa i terminal</title>
<link>https://forum.pasja-informatyki.pl/354374/czasy-wykonywania-algorytmu-sortowan-roznia-sie-poprzez-codeblocksa-i-terminal</link>
<description>

&lt;p&gt;Cześć.&lt;/p&gt;



&lt;p&gt;Mam za zadanie porównać czasy działania algorytmów dla różnych sortowań dla różnych wielkości tablic.&lt;/p&gt;



&lt;p&gt;Napisałem cały program.&lt;/p&gt;



&lt;p&gt;Odpalam terminal, włączam program i za każdym razem mimo dużego rozmiaru liczb do posortowania wartość zawsze była bliska 0. Głowię się nad tym już od 2h i nie wiem o co chodzi.&lt;/p&gt;



&lt;p&gt;Włączyłem CodeBlocksa i tam pokazuje w miarę możliwe do uzyskania wynika.&lt;/p&gt;



&lt;p&gt;Oto wycinek z obu konsol:&lt;/p&gt;



&lt;p&gt;&lt;img alt=&quot;&quot; src=&quot;https://forum.pasja-informatyki.pl/?qa=blob&amp;amp;qa_blobid=14771491283622552955&quot; style=&quot;height:151px; width:600px&quot;&gt;&lt;/p&gt;



&lt;p&gt;(&amp;nbsp;&lt;a href=&quot;https://zapodaj.net/971b359b814ac.png.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;https://zapodaj.net/971b359b814ac.png.html&lt;/a&gt; )&lt;/p&gt;



&lt;p&gt;Oto kod:&lt;/p&gt;



&lt;pre class=&quot;brush:cpp;&quot;&gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;stdbool.h&amp;gt;
#include&amp;lt;time.h&amp;gt;

void shell_Sort(int *tab, int n)
{
    int i, j, increment, tmp;
    for(increment = n/2; increment &amp;gt; 0; increment /= 2)
    {
        for(i = increment; i &amp;lt; n; i++)
        {
            tmp = tab[i];
            for(j = i; j &amp;gt;= increment; j -= increment)
            {
                if(tmp &amp;lt; tab[j-increment])
                    tab[j] = tab[j-increment];
                else
                    break;
            }
            tab[j] = tmp;
        }
    }
}

void bubble_Sort(int *tab, int n)
{
    int j;
    bool swapped = true;
    int index =0;

    while(index &amp;lt; n-1 &amp;amp;&amp;amp; swapped)
    {
        swapped = false;
        for(j = 0; j &amp;lt; n -1 ; j++)
            if(tab[j] &amp;gt; tab[j+1])
            {
                swap(tab,j,j+1);
                swapped = true;
            }
        index++;
    }
}

void insert_Sort(int *tab, int n)
{
    int i,x,j;

    for(i=1; i&amp;lt;n; i++)
    {
        x=tab[i];
        j=i-1;
        while(tab[j]&amp;gt;x &amp;amp;&amp;amp; j&amp;gt;=0)
        {
            tab[j+1]=tab[j];
            j--;
        }
        tab[j+1]=x;
    }
}

void select_Sort(int *tab, int n)
{
    int minIndex,i,j;

    for(i=0; i&amp;lt;n; i++)
    {
        minIndex = i;

        for(j = i+1 ; j&amp;lt; n; j++)
        {
            if(tab[minIndex]&amp;gt;tab[j])
            {
                minIndex = j;
            }
        }
        if(minIndex!=i)
        {
            swap(tab,minIndex,i);
        }
    }
}

void swap(int *tab, int index1, int index2)
{
    int temp = tab[index1];
    tab[index1] = tab[index2];
    tab[index2] = temp;
}

void heap_Sort(int *tab, int n)
{
    int i;
    for( i = n / 2 - 1; i &amp;gt;= 0; i--)
    {
        checkMaxHeap(tab, n, i);
    }

    for( i = n - 1; i &amp;gt; 0; i--)
    {
        swap(tab, 0, i);
        --n;
        checkMaxHeap(tab, n, 0);
    }
}

void checkMaxHeap(int *tab, int heapSize, int parentIndex)
{
    int maximumIndex = parentIndex;
    int leftChild = parentIndex * 2 + 1;
    int rightChild = parentIndex * 2 + 2;

    if(leftChild &amp;lt; heapSize &amp;amp;&amp;amp; tab[leftChild] &amp;gt; tab[maximumIndex])
    {
        maximumIndex = leftChild;
    }
    if(rightChild &amp;lt; heapSize &amp;amp;&amp;amp; tab[rightChild] &amp;gt; tab[maximumIndex])
    {
        maximumIndex = rightChild;
    }
    if(maximumIndex != parentIndex)
    {
        swap(tab, maximumIndex, parentIndex);
        checkMaxHeap(tab, heapSize, maximumIndex);
    }
}

void quick_Sort(int *tab, int poczatek, int koniec)
{
    int i=poczatek,j=koniec,s,pom;

    s=tab[(i+j)/2];
    do
    {
        while (tab[i]&amp;lt;s)
            i++;
        while (tab[j]&amp;gt;s)
            j--;
        if(i&amp;lt;=j)
        {
            pom=tab[i];
            tab[i]=tab[j];
            tab[j]=pom;
            i++;

            j--;
        };
    }
    while(i&amp;lt;=j);
    if(j&amp;gt;poczatek)
        quick_Sort(tab,poczatek,j);
    if(i&amp;lt;koniec)
        quick_Sort(tab,i,koniec);
}


int main()
{
    int n, sortOption, typeOption,i ;

    printf(&quot;How many numbers do you want to sort?\n&quot;);
    scanf(&quot;%d&quot;, &amp;amp;n);

    int *tab = (int*)malloc(sizeof(int)*n);

    printf(&quot;Please input which numbers you want to sort &amp;lt;-100,100&amp;gt;:\n&quot;);
    printf(&quot;1. Random numbers\n2. Numbers sorted descending\n3. Numbers sorted ascending\n&quot;);
    scanf(&quot;%d&quot;, &amp;amp;typeOption);

    printf(&quot;Which type of sorting do you want to use?\n&quot;);
    printf(&quot;1. Bubble sort \n2. Insert Sort\n3. Select Sort\n4. Shell Sort\n5. Heap Sort\n6. Quick Sort\n&quot;);
    scanf(&quot;%d&quot;,&amp;amp;sortOption);

    switch(typeOption)
    {
    case 1:
    {
        FILE* fp = fopen(&quot;dane-test1.txt&quot;, &quot;r&quot;);
        for(i = 0 ; i &amp;lt; n ; i++)
        {
            fscanf(fp, &quot;%d&quot;, &amp;amp;tab[i]);
        }
        fclose(fp);
        break;
    }

    case 2:
    {
        FILE* fp = fopen(&quot;dane-test2.txt&quot;, &quot;r&quot;);
        for(i = 0 ; i &amp;lt; n ; i++)
        {
            fscanf(fp, &quot;%d&quot;, &amp;amp;tab[i]);
        }
        fclose(fp);
        break;
    }
    case 3:
    {
        FILE* fp = fopen(&quot;dane-test3.txt&quot;, &quot;r&quot;);
        for(i = 0 ; i &amp;lt; n ; i++)
        {
            fscanf(fp, &quot;%d&quot;, &amp;amp;tab[i]);
        }
        fclose(fp);
        break;
    }
    }

    clock_t start,stop;
    double time;
    start=clock();

    switch(sortOption)
    {
    case 1:
        bubble_Sort(tab,n);
        break;
    case 2:
        insert_Sort(tab,n);
        break;
    case 3:
        select_Sort(tab,n);
        break;
    case 4:
        shell_Sort(tab,n);
        break;
    case 5:
        heap_Sort(tab,n);
        break;
    case 6:
        quick_Sort(tab,0,n);
        break;
    }

    stop=clock();
    time=(double)(stop-start) / CLOCKS_PER_SEC;
    printf(&quot;Algorithm needed  %f seconds&quot;,time);
    free(tab);
}
&lt;/pre&gt;



&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
<category>C i C++</category>
<guid isPermaLink="true">https://forum.pasja-informatyki.pl/354374/czasy-wykonywania-algorytmu-sortowan-roznia-sie-poprzez-codeblocksa-i-terminal</guid>
<pubDate>Thu, 31 May 2018 13:24:43 +0000</pubDate>
</item>
</channel>
</rss>