字符串按无序度排列

在这里插入图片描述
题意很明确,按无序度将字符串排序

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#define N 60
#define M 110
using namespace std;

typedef struct info
{
	char str[N];
	int du;
}info;                        //用结构体将字符串与无序度存储 

info f[M];
int n,m;
void wuxudu (info* l, int m, int n)         //将无序度求出并储存 
{
	int sum=0;                              //计数器 
	for (int i=1; i<=m; i++)
	{
		for (int j=0; j<n; j++)
		for (int k=j+1; k<n; k++)
		{
			if (l[i].str[j] > l[i].str[k])
			sum++;
		}
		l[i].du=sum;
		sum=0;                               //计数器归零,重新计数 
	}
}

int cmp(const void *a, const void *b)         //按升序排序 
{
	return (*(info*)a).du > (*(info*)b).du ? 1:-1;
}

void Initl (info* l,int n, int m)          //结构体赋值输入函数 
{
	char ch;
	for (int i=1; i<=m; i++)
	{
		scanf("%s",&l[i].str);
	}
}


int main ()
{
	cin>>n>>m;
    Initl(f,n,m);
	wuxudu(f,m,n);
	qsort(f,m+1,sizeof(f[0]),cmp);         //结构题排序 
	printf("\n");
	for (int i=1; i<=m; i++)
	{
		for (int j=0; j<n; j++)
		printf("%c",f[i].str[j]);          //输出排序结果 
		cout<<endl;
	}
	return 0; 
 } 

运行结果如下
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值