Facebook
From Baby Wigeon, 7 Years ago, written in C.
Embed
Download Paste or View Raw
Hits: 270
  1. #include <stdio.h>
  2. #include <math.h>
  3. #include <stdlib.h>
  4.  
  5. void swap(float x, float y){
  6.         float z=y;
  7.         y=x;
  8.         x=z;
  9. }
  10.  
  11. void quicksort(float tab[], int left, int right){
  12.    int pivot=(left+right)/2;
  13.    if(left>=right)return;
  14.    int p=left;
  15.    int q=right;
  16.    do
  17.    {
  18.          while(p<=right && tab[p] < pivot) p++;
  19.          while(q>=left && tab[q] > pivot) q--;
  20.          if(p <= q)
  21.          {
  22.                  swap(tab[p], tab[q]);
  23.                  p++;
  24.                  q--;
  25.          }
  26.    }
  27.    while(p<=q);
  28.    quicksort(tab, left, q);
  29.    quicksort(tab, p, right);
  30. }
  31.  
  32. main(){
  33.     int i=0,rozmiar=4,wpisane=0;
  34.     float *tablica,a;
  35.    
  36.     tablica = (float*) malloc(rozmiar * sizeof(*tablica));
  37.     tablica[0] = 0.1;
  38.    
  39.     FILE *f=fopen("dane2.txt","r");
  40.    
  41.     if(f==NULL)
  42.     printf("Problem z plikiem");
  43.  
  44.     else{
  45.         if(wpisane!=rozmiar){
  46.             while(!feof(f)){
  47.                 if(i==0){
  48.                     fscanf(f,"%f",&a);
  49.                     tablica[i]=a;
  50.                     i++;}
  51.                         else{
  52.                     fscanf(f,"%f", &a);
  53.                     tablica[i]=a;
  54.                     i++;
  55.                         }
  56.                 }
  57.         }
  58.        
  59.         else{
  60.         float *tablica2 = malloc(2*rozmiar * sizeof(*tablica));
  61.         rozmiar=2*rozmiar;
  62.         int j;
  63.         for(j=0;j<i;j++)
  64.             tablica2[j]=tablica[j];
  65.         free(tablica);
  66.         tablica=tablica2;
  67.         i--;
  68.         tablica[i]=a;
  69.         i++;
  70.         wpisane++;}    
  71.     }  
  72.     quicksort(tablica, 0, i);
  73.  
  74.         int j=0;
  75.         for (j=0;j<i;j++)
  76.                 printf("%fn", tablica[j]);    
  77.     return 0;
  78. }      
  79.