样例:输入
10 6
AACATGAAGGTTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT
输出:
CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
typedef struct //定义结构体,便于数据的处理
{
string dna;
int count;
}DNA;
int cmp(const void *a, const void *b) //cmp是对应的比较函数
{
DNA *aa = (DNA *)a; //结果体处理快速排序中cmp的格式
DNA *bb = (DNA *)b;
return aa->count - bb->count;
}
int main()
{
DNA dna[101];
int n, m;
char c;
int i;
cin >> n >> m; //定义列跟行
for ( i = 0; i < m; i++)
{
cin >> dna[i].dna; //输入每一行的数据
dna[i].count = 0; //设定开始每一行的逆序数的值为0
for (int j = 0; j < n; j++)
for (int k = j + 1; k < n; k++)
{
if (dna[i].dna[j]>dna[i].dna[k]) //比较当前位置的值与之前的值的关系 ,如果当前位置的值是小于之前的 ,则逆序数加1
dna[i].count++;
}
}
qsort(dna, m, sizeof(dna[0]), cmp); //对所有逆序数的值进行快速排序比较,cmp是对应的比较函数
for ( i = 0; i < m; i++)
{
cout << dna[i].dna << endl; //输出排好序后的每一行的值
}
return 0;
}