Eukleides project

from http://d.hatena.ne.jp/u5_h/

(構造関係)クイックソート

課題のpascal翻訳も30分で完了し、クイックソート完成☆
瞑想に耽りながら考えたので関数を参考に・・・
コメント少なくてごめんなさい。決して天才肌ではないので
//quicksort.c
//date 2006 7/23
//author u5h
//
//Makefile
//CFLAGS= -g
//:quicksort
//
//cations! :This program has to use "phone.txt"file
//please make it.Following its prototype
// "phone.txt"
// suzuki 1001
// yamada 1003
// ・・・・・・ ・・・・

#include
#include
#include



struct record{
char name[15];
int num;
};

struct record A[60];
void quicksort(int,int);
int main(void)
{

FILE *fp;
char name[15];
int num,i=0;

if( (fp=fopen("phone.txt","r"))==NULL)
{
printf("file error.\n");
exit(1);
}
while( fscanf(fp,"%s %d",name,&num)!=EOF)
{
strcpy(A[i].name,name);
A[i].num=num;
i++;
}
fclose(fp);

for(i=0;i<6;i++)
printf("%s %d\n",A[i].name,A[i].num);
printf("\n");

quicksort(0,5);

for(i=0;i<6;i++)
printf("%s %d\n",A[i].name,A[i].num);
printf("\n");

return 0;
}

void quicksort(int first,int last)
{

char key[15];
int i,j,x;
struct record t;
i=first;
j=last;
x=(first+last)/2;
strcpy(key,A[x].name);
printf("\n");

do{
while(strcmp(A[i].name,key)<0)
i++;
while(strcmp(A[j].name,key)>0)
j--;
if(i<=j)
{
t=A[i]; /*sorting ij*/

A[i]=A[j];
A[j]=t;
i++;
j--;
}

}while(!(i>j));

if(first