每天一道算法_8_DNA Sorting

DescriptionOne measure of “unsortedness” in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence “DAABEC”, this mea

大家好,又见面了,我是全栈君。

Description

One measure of “unsortedness” in a sequence is the number of pairs of entries that are out of order with respect to each other. For instance, in the letter sequence “DAABEC”, this measure is 5, since D is greater than four letters to its right and E is greater than one letter to its right. This measure is called the number of inversions in the sequence. The sequence “AACEDGG” has only one inversion (E and D)—it is nearly sorted—while the sequence “ZWQM” has 6 inversions (it is as unsorted as can be—exactly the reverse of sorted).  



You are responsible for cataloguing a sequence of DNA strings (sequences containing only the four letters A, C, G, and T). However, you want to catalog them, not in alphabetical order, but rather in order of “sortedness”, from “most sorted” to “least sorted”. All the strings are of the same length.  

 

Input

The first line contains two integers: a positive integer n (0 < n <= 50) giving the length of the strings; and a positive integer m (0 < m <= 100) giving the number of strings. These are followed by m lines, each containing a string of length n.
 

Output

Output the list of input strings, arranged from “most sorted” to “least sorted”. Since two strings can be equally sorted, then output them according to the orginal order.
 

Sample Input

10 6
AACATGAAGG
TTTTGGCCAA
TTTGGCCAAA
GATCAGATTT
CCCGGGGGGA
ATCGATGCAT

 

Sample Output

CCCGGGGGGA
AACATGAAGG
GATCAGATTT
ATCGATGCAT
TTTTGGCCAA
TTTGGCCAAA

 

代码如下:

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.util.Arrays;
import java.util.Comparator;

//import java.util.Scanner;   
class DNA {
	String value;
	int level;
}

class DNAType implements Comparator<Object> {
	public int compare(Object arg0, Object arg1) {
		DNA obj1 = (DNA) arg0;
		DNA obj2 = (DNA) arg1;
		return obj1.level - obj2.level;
	}
}

public class DNASorting {
	public static void main(String[] args) throws Exception {
		int i;
		// Scanner cin = new Scanner(System.in);
		DataInputStream cin = new DataInputStream(new BufferedInputStream(
				System.in));
		// int col = cin.nextInt();
		// int row = cin.nextInt();
		// cin.nextLine();
		String s = new String();
		s = cin.readLine();
		String n[] = s.split(" ");
		int col = Integer.parseInt(n[0]);
		int row = Integer.parseInt(n[1]);
		DNA dna[] = new DNA[row];
		for (i = 0; i < row; ++i) {
			String line = new String();
			// line = cin.nextLine();
			line = cin.readLine();
			dna[i] = new DNA();
			dna[i].value = line;
			dna[i].level = getLevel(line);
		}
		DNAType comp = new DNAType();
		Arrays.sort(dna, comp);
		for (i = 0; i < row; ++i) {
			System.out.println(dna[i].value);
		}
	}

	private static int getLevel(String line) {
		int i, j, t = 0;
		for (i = 0; i < line.length(); ++i) {
			for (j = i + 1; j < line.length(); ++j) {
				if (line.charAt(i) > line.charAt(j)) {
					++t;
				}
			}
		}
		return t;
	}
}

 

作者:jason0539

微博:http://weibo.com/2553717707

博客:http://blog.csdn.net/jason0539(转载请说明出处)

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/121381.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 三极管是如何导通的?「建议收藏」

    三极管是如何导通的?「建议收藏」作者:被吊打的学渣链接:https://www.zhihu.com/question/19998995/answer/311658942来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转

    2022年8月3日
    11
  • ES6中变量let的属性以及在for循环中的使用

    ES6中变量let的属性以及在for循环中的使用

    2022年4月3日
    132
  • GOGS代码仓库迁移教程

    GOGS代码仓库迁移教程前言安装复制原始仓库数据修改用户配置启动 gogs 关键步骤更新 authorized keys 和 HooK0 前言 GOGS 部署到本机比较方便 这次遇到需要将 GOGS 从 win10 系统迁移到安装 UbuntuMate 的树莓派上面 在此记录下迁移教程 1 安装树莓派需要下载对应的版本 raspi2 armv6 zip 下载地址 https dl gogs io 下载后解压到自定义目录 如

    2025年6月24日
    4
  • er图是什么样的_er图形状代表什么意思

    er图是什么样的_er图形状代表什么意思数据模型(DataModel)是数据特征的抽象。数据模型所描述的内容包括三个部分(三个要素):数据结构、数据操作、数据约束。数据模型分为两类:第一类和第二类。第一类就是概念模型,ER图就是概念模型的一种表示方法。ER图:实体-关系图。是用来描述现实世界的一种概念模型。包括三个要素:实体(矩形)、属性(椭圆)、关系(菱形)。关系要标明类型:1对多、1对1、多对多等关系。第二类包括逻辑…

    2022年9月22日
    2
  • 比SQL还好用,又一门国产数据库语言诞生了「建议收藏」

    比SQL还好用,又一门国产数据库语言诞生了「建议收藏」数据库语言,你会哪几种?写得简单又跑的快,它来了……

    2022年10月6日
    6
  • IMDb Top 250佳片榜_吹哨人 电影

    IMDb Top 250佳片榜_吹哨人 电影互联网电影资料库(英语:InternetMovieDatabase,简称IMDb)是一个关于电影演员、电影、电视节目、电视艺人、电子游戏和电影制作小组的在线数据库。IMDb开办于1990年10月17日,从1998年开始成为亚马逊公司旗下的网站,在2010年10月17日时,IMDb庆祝了他们20周年的纪念。用户评分最高的250部电影进入Top250榜单,但并非简单地根据平均分值来排名,而…

    2022年9月23日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号