//hoán vị các phần tử trong mảng , hoán vị 1 số nhập từ bàn phím trong lập trình c
//ví dụ 123=>6 hoán vị
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
void nhap(int *a,int n)
{
for(int i=0;i<n;i++)
{
printf("a[%d]=",i+1);
scanf("%d",&a[i]);
}
}
void xuat(int *a,int n)
{
for(int i=0;i<n;i++) printf("%d ",a[i]);
printf("\n");
}
void doi(int &a,int &b)
{
int t=a;a=b;b=t;
}
void sapxep(int *a,int n,int i)
{
for(int j=i;j<n-1;j++)
for(int k=j+1;k<n;k++)
if(a[j]>a[k]) doi(a[j],a[k]);
}
void hoanvi(int *a,int n)
{
int i,j;
xuat(a,n);
loop:;
for(i=n-1;i>0;i--) if(a[i]>a[i-1]) break;
if(i!=0)
{
for(j=n-1;j>=i;j--)
{
if(a[j]>a[i-1])
{
doi(a[j],a[i-1]);
sapxep(a,n,i);
xuat(a,n);
break;
}
}
}
if(i!=0) goto loop;
}
void main()
{
int n,i;
printf("nhap so hoan vi:");
scanf("%d",&n);
int *a=(int *)malloc(n*sizeof(int));
nhap(a,n);
hoanvi(a,n);
getch();
}
0 comments:
Post a Comment