关闭

排列

标签: pojc
260人阅读 评论(0) 收藏 举报
分类:
//排列
#include<stdio.h>
#include<stdlib.h>

#define MAX_NUM 1024
int an[MAX_NUM+10];
int MyCompare(const void *e1,const void *e2)
{
	return *((int *)e1)-*((int *)e2);
}
int main()
{
	int M;
	int n,k,i,j;
	scanf("%d",&M);
	for(int m=0;m<M;m++)
	{
		scanf("%d%d",&n,&k);
		for(i=1;i<=n;i++)
			scanf("%d",&an[i]);
		an[0]=100000;
		for(i=0;i<k;i++)
		{
			for(j=n;j>=1&&an[j-1]>an[j];j--);
			if(j>=1)
			{
				int nMinLarger=an[j];
				int nMinIdx=j;
				for(int kk=j;kk<=n;kk++)
				{
					if(nMinLarger>an[kk]&&an[kk]>an[j-1])
					{
						nMinLarger=an[kk];
						nMinIdx=kk;
					}	
				}
				an[nMinIdx]=an[j-1];
				an[j-1]=nMinLarger;
				qsort(an+j,n-j+1,sizeof(int),MyCompare);	
			}
			else
			{
				for(j=1;j<=n;j++)
					an[j]=j;				
			}	
		}
		for(j=1;j<=n;j++)
			printf("%d ",an[j]);
		printf("\n");	
	}
	return 0;
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:233724次
    • 积分:5746
    • 等级:
    • 排名:第4673名
    • 原创:325篇
    • 转载:45篇
    • 译文:0篇
    • 评论:115条
    文章分类