Bạn xin code hay xin thuật toán, quan trọng là mình phải hiểu, code thì đầy ra.
Mã:
#include <stdio.h>
#include <conio.h>
#define max 20
int hoanvi(int &a,int &b)
{
int tmp;
tmp=a;
a=b;
b=tmp;
}
void sxchon(int k[],int n)
{
for(int i=0; i<=n; i++)
{
int m=i;
for(int j=i+1; j<n; j++)
if(k[j]>k[m])
m=j;
if(m!=i)
hoanvi(k[i],k[m]);
}
}
void sxchen(int k[],int n)
{
for(int i=1; i<n; i++)
{
int x=k[i];
int j=i-1;
while(x>k[j])
{
k[j+1]=k[j];
j--;
};
k[j+1]=x;
}
}
void sxnoibot(int k[max],int n)
{
for(int i=0; i<n; i++)
for(int j=n-1; j>=i+1; j--)
if(k[j]>k[j-1])
hoanvi(k[j],k[j-1]);
}
void sxnhanh(int k[], int left,int right)
{
if(left<right)
{
int i,j,x;
i=left;
j=right;
x=k[(left+right)/2];
do
{
while(k[i]>x)
i++;
while(k[j]<x)
j--;
if(i<=j)
{
hoanvi(k[i],k[j]);
i++;
j--;
}
}
while(i<=j);
sxnhanh(k,left,j);
sxnhanh(k,i,right);
}
}
void chends(int k[max], int &n)
{
int x,vt;
printf("\nNhap so can chen: ");
scanf("%d",&x);
printf("\nNhap vi tri can chen: ");
scanf("%d",&vt);
--vt;
if((vt<=n)&&(vt>=0))
{
for(int i=n; i>=vt; i--)
k[i+1]=k[i];
n++;
k[vt]=x;
}
else
printf("\nVi tri khong hop le !\a\n");
}
void xoa(int k[max],int &n)
{
int x;
printf("\nNhap vi tri can xoa");
scanf("%d",&x);
if(x<1||x>n)
printf("\n\aVi tri khong hop le !");
else
{
--x;//gia tri thuc te
for(int i=x; i<n; i++)
k[i]=k[i+1];
n--;
}
}
void nhapds(int k[max],int &n)
{
printf("\nNhap so phan tu nho hon %d: ",max);
scanf("%d",&n);
for(int i=0; i<n; i++)
{
printf("\nNhap %d: ",i+1);
scanf("%d",&k[i]);
}
}
void inds(int k[max],int n)
{
for(int i=0; i<n; i++)
printf("%d ",k[i]);
printf("\n");
}
main()
{
int n,i,j,m[max];
//menu
char c;
menu:
{
printf("----------------------------Menu---------------------\n|\n");
printf("|Nhan q de thoat chuong trinh\n|Nhan r de hien lai Menu\n|\n");
printf("|1.Nhap danh sach\n");
printf("|2.In danh sach\n");
printf("|3.Sap xep chen\n");
printf("|4.Sap xep chon\n");
printf("|5.Sap xep noi bot\n");
printf("|6.Sap xep vun dong\n");
printf("|7.Sap xep nhanh\n");
printf("|8.Xoa phan tu\n");
printf("|9.Chen phan tu\n|\n");
printf("----------------------------Menu---------------------\n");
}
while(c!='q')
{
c=getch();
switch(c)
{
case '1':
nhapds(m,n);
break;
case '2':
inds(m,n);
break;
case '3':
sxchen(m,n);
break;
case '4':
sxchon(m,n);
break;
case '5':
sxnoibot(m,n);
break;
case '7':
sxnhanh(m,0,n-1);
break;
case '8':
xoa(m,n);
break;
case '9':
chends(m,n);
break;
case 'r':
goto menu;
break;
case 'q':
printf("\nKet thuc chuong trinh !\n\n");
break;
}
}
}