ورود

View Full Version : سوال: مرتب سازی



noura karimi
یک شنبه 14 آبان 1391, 18:18 عصر
سلام دوستان میدونم همه شما این برنامه رو میدونید که برای مرتب سازی سریع استفاده میشه
#include stdio.h
#include conio.h
void qsort(int a[],int,int);
void partition(int a[],int,int,int *);
void print(int *,int);
void swap(int *,int *);

void main()
{
int a[30],i,n;
flushall();
clrscr();
printf(" enter how many data u want :");
scanf("%d",&n);

printf(" enter the data :");
for(i=0;i {
printf("\n %d = ",i);
scanf("%d",&a[i]);
}
qsort(a,0,n-1);
printf(" SORTED DATA: ");
print(a,n-1);
getch();
}
void qsort(int a[],int lb,int ub)
{
int j;
if(ub>lb)
{
partition(a,lb,ub,&j);
qsort(a,lb,j-2);
qsort(a,j+2,ub);
}
}
void partition(int a[],int lb,int ub,int *j)
{

int mid=(lb+ub)/2,temp,up,down,pivot;
pivot=a[mid];
up=ub;
down=lb;
while(down {
while( a[down] <= pivot && down <= ub )
{
down++;
if(a[down]lb)
swap(&a[down],&a[down-1]);
}
while(a[up]>pivot)
{
up--;
if(a[up]>a[up+1]&&up swap(&a[up],&a[up+1]);
}
if(down {
swap(&a[down],&a[up]);
if(a[down]0)
swap(&a[down],&a[down-1]);
if(a[up]>a[up+1]&&up swap(&a[up],&a[up+1]);
}

}
for(int i=0;i if(a[i]>a[i+1])
swap(&a[i],&a[i+1]);
*j=up;
}
void print(int a[],int n)
{
for(int i=0;i<=n;i++)
printf("%4d",a[i]);
}
void swap(int *p,int *q)
{
int t;
t=*p;
*p=*q;
*q=t;
}


اما الان من نمیدونم چطور میشه که برنامه یک فایل text شامل 50 حرف لاتین را بخواند و به صورت این مرتب سازی مرتب کند و در یک فایل خروجی نمایش دهد

omidshaman
دوشنبه 15 آبان 1391, 09:01 صبح
برای باز کردن فایل و انتقال به ارایه مثلا


File *test=fopen("new.txt","r+");
fgets(array,"%s",test);

در ضمن این برنامتون پر اشکاله...
شما اکثر دستورای شرطیتون نصفه ان!
هدر رو هم داخل <> تعریف می کنن
این هم معنی نمیده 2-3 جا هم استفاده شده

if(a[down]lb)