CTDL & GT - sort
#include <stdio.h>
#include <stdlib.h>
typedef struct data
{
int ma;
char ht[10];
} data;
void doicho(int *a,int *b)
{
int tg;
tg = *a;
*a=*b;
*b=tg;
}
void selection_sort (int a[],int n)
{
int temp ,i,j;
for(i=0;i<n-1;i++)
{
temp=i;
for(j=i+1;j<n;j++)
if (a[j]<a[temp]) temp =j;
if (temp!=i) doicho(&a[i],&a[temp]);
}
}
void insertion_sort(int a[],int n)
{
int pos,i,temp;
for(i=1;i<n;i++)
{
temp=a[i];
pos = i-1;
while ((pos>=0)&& (a[pos]>temp))
{
a[pos+1] =a[pos];
pos--;
}
a[pos+1]=temp;
}
}
void bubblesort (int a[],int n)
{
int i,j;
for(i=0;i<n-1;i++)
for(j=n-1;j>i;j--)
if (a[j]<a[j-1]) doicho (&a[j],&a[j-1]);
}
void ShellSort (int a[], int N, int h[], int k)
{int step,i,j;
int x,len;
for (step=0;step<k;step++)
{len=h[step];
for (i=len;i<N; i++)
{x=a[i];
j=i-len;
while ((x<a[j])&&(j>-1))
{a[j+len]=a[j];
j=j-len;
}
a[j+len]=x;
}
}
}
void QuickSort (int a[], int l, int r)
{int i,j,x;
x=a[(l+r)/2];
i=l; j=r;
do
{while (a[i]<x)i++;
while (a[j]>x)j--;
if (i<=j)
{doicho(&a[i],&a[j]);
i++;
j--;
}
} while (i<j);
if (l<j) QuickSort(a,l,j);
if (i<r) QuickSort(a,i,r);
}
void Shift(int a [ ],int l, int r)
{int x, i, j, cont;
i = l; j = 2*i+1;
cont =1;
x = a[i ];
while ((j<=r) and (cont))
{if (j <r)
if (a[j]>a[j+1])
j=j+1;
if (a[j]>x)
cont = 0;
else
{doicho(&a[i],&a[j]);
i = j;
j=2*i+1;
}
}
}
void CreateHeap(int a[ ],int N)
{
int i;
i = N/2;
while (i > 0)
{i--;
Shift(a,i,N-1);
}
}
void Heapsort(int a[],int N)
{
int r;
r = N-1;
while (r > 0)
{
doicho(&a[0],&a[r]);
r--;
Shift(a,0,r);
}
}
void input (data *a)
{
char temp[5];
fflush(stdin);
printf("
Nhap Ma: "); gets(temp); a->ma=atoi(temp);
fflush(stdin);
printf("
Nhap ho te: "); gets(a->ht);
}
void output(data a)
{
printf("
Ma: %3d \t HoTen: %10s ",a.ma,a.ht);
}
int main(int argc, char *argv[])
{
int a[]={7,4,3,6,8,5,9,1,2};
int h[]={5,1,3};
//ShellSort(a,9,h,3);
//QuickSort(a,0,9);
//insertion_sort(a,9);
//selection_sort(a,9)
/*CreateHeap(a,9);
Heapsort(a,9);*/
data *b;
b=(data*)malloc(5*sizeof(data));
int i;
for(i=0;i<5;i++)
{
input(&b[i]);
}
//for(int i=0;i<9;i++)
//printf("%2d",a[i]);
for(i=0;i<5;i++)
output(b[i]);
printf("
");
system("PAUSE");
return 0;
}
Bạn đang đọc truyện trên: AzTruyen.Top