#include #include #include #include #include #include #define filename "pinakas.txt" int menu(void); int DimiourgiaPinaka (int *pinakas); void EmfanisiPinaka(int *pinakas, int length); void saveData(int *pinakas, int length); void loadData(int *pinakas); int bubblesort (int *pin,int megethos); int insertionSort(int *pin,int megethos); int quickSort(int a[], int left, int right,int diakoptis ); int euresi (int megethos); //---------------------------------------------------------------------------------------------------------------------// //SYNARTISI MAIN()// int main(void) { int choice,*pinakas,megethos,memory,tyxaio_stoix,temp1,temp2,temp3; pinakas=(int *)malloc(1*sizeof(int)); if(pinakas==NULL) printf("Den yparxei arketi mnini gia dimiourgia enos pinaka \n"); do{ choice=menu(); switch(choice){ case 1:megethos=DimiourgiaPinaka(pinakas); break; case 2:saveData(pinakas,megethos);getch(); break; case 3:loadData(pinakas);printf("megethos:%d\n",sizeof(pinakas)); break; case 4:EmfanisiPinaka(pinakas,megethos); break; case 5:temp1=bubblesort(pinakas,megethos);printf("Eginan %d antimetatheseis! \n",temp1); break; case 6:temp2=insertionSort(pinakas,megethos);printf("Eginan %d antimetatheseis!\n",temp2);break; case 7:temp3=quickSort(pinakas,0,megethos-1,1); printf("Eginan %d antimetatheseis!\n",temp3);break; case 8:temp3=quickSort(pinakas,0,megethos-1,2);printf("Eginan %d antimetatheseis!\n",temp3); break; case 9:temp3=quickSort(pinakas,0,megethos-1,3);printf("Eginan %d antimetatheseis! \n",temp3);break; case 0:exit(0); } }while(1); free(pinakas); } //---------------------------------------------------------------------------------------------------------------------// int menu(void){ int choice; do{ printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* \n"); printf("1.Dimiourgia pinaka \n"); printf("2.Apothikeusi pinaka se arxeio \n"); printf("3.Anaktisi pinaka apo arxeio \n"); printf("4.Emfanisi pinaka \n"); printf("5.Bubblesort \n"); printf("6.Insertion Sort \n"); printf("7.Quick Sort 1 \n"); printf("8.Quick Sort 2 \n"); printf("9.Quick Sort 3 \n"); printf("0.Eksodos apo tin efarmogi \n"); printf("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* \n"); printf("EPILOGH : "); scanf("%d",&choice); }while (choice!=0&&choice!=1 && choice!=2 && choice!=3 && choice!=4 && choice!=5 &&choice!=6 && choice!=7 && choice!=8 && choice!=9); return choice; } //---------------------------------------------------------------------------------------------------------------------// int DimiourgiaPinaka (int *pinakas) { int megethos,epilogi,key=0,i; printf("Dwste to epithymito megethos tou pinaka :\n"); scanf("%d" , &megethos); realloc(pinakas,megethos * sizeof(int)); if(pinakas==NULL) printf("Den yparxei arketi mnini gia dimiourgia enos pinaka \n"); while(key==0) { printf("Patiste 1 gia Ataksinomito pinaka h 2 gia Sxedon Taksinomimeno pinaka : \n"); scanf("%d",&epilogi); if(epilogi==1) { printf("EPILOGH 1:Ataksinomitos pinakas --> to aitima sas einai se ekseliksi...\n"); srand(time(NULL)); for (i=0; ipin[j+1]) { temp = pin[j]; pin[j] = pin[j+1]; pin[j+1] = temp; c1=c1+1; } } } return c1; } //---------------------------------------------------------------------------------------------------------------------// int insertionSort(int pin[],int megethos) { int i,j=0,temp,c2=0; for(i=1; i0)&&(pin[j-1]>temp)) { pin[j] = pin[j-1]; j=j-1; pin[j]=temp; c2=c2+1; } } return c2; } //---------------------------------------------------------------------------------------------------------------------// int quickSort(int pin[], int left, int right,int diakoptis ) { int timi_diax, min, max,temp,i,c3=0; min = left; max = right; if(diakoptis==2 || diakoptis==3) { temp=euresi(right); timi_diax = pin[temp]; } if(diakoptis==3 && right<=100 ) { c3=insertionSort(pin,right); return c3; } timi_diax = pin[left]; while( left < right ) { while( (pin[right] >= timi_diax) && (left < right) ) right--; if( left != right ) { pin[left] = pin[right]; left++; c3=c3+1; } while( (pin[left] <= timi_diax) && (left < right) ) left++; if( left != right ) { pin[right] = pin[left]; right--; c3=c3+1; } } pin[left] = timi_diax; timi_diax = left; c3=c3+1; left = min; right = max; if(diakoptis==1) { if( left < timi_diax ) quickSort(pin, left, timi_diax-1,1 ); if( right > timi_diax ) quickSort(pin, timi_diax+1, right,1 ); } else if(diakoptis==2) { if( left < timi_diax ) quickSort(pin, left, timi_diax-1,2 ); if( right > timi_diax ) quickSort(pin, timi_diax+1, right,2 ); } return c3; } //---------------------------------------------------------------------------------------------------------------------// int euresi (int megethos) { int temp; srand(time(NULL)); temp = rand()%megethos; return temp; } //----------------------------------------------------TELOS ASKISIS-------------------------------------------------------//