码迷,mamicode.com
首页 > 编程语言 > 详细

POJ-1007: DNA Sorting 详解1: 插入排序法

时间:2015-08-09 15:28:44      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

> 分析

  >> 本题分两步
     1. 计算序列的逆序数
     2. 根据逆序数排序
  >> 由于序列个数最大只有100个, 所以不需要过分追求速度,插入排序就够用
 
> 注意:
  >> 存储序列的数组长度最好是50+1, 有利于输出
 
> 附代码
 1 #include "stdio.h"
 2 
 3 int main(void)
 4 {
 5     char seqs[100][50 + 1] = {0} ;
 6     int inversions[100] = {0} ;
 7     int sortSeqs[100] = {0} ;
 8     int tmp = 0 ;
 9     int seqNum = 0 ;
10     int seqLen = 0 ;
11     int i = 0, j = 0, k = 0 ;
12     int min = 0 ;
13 
14     scanf("%d %d", &seqLen, &seqNum) ;
15 
16     for(i = 0; i < seqNum; i++) 
17     {
18         scanf("%s", seqs[i]) ;
19         
20         for(j = 0; j < seqLen; j++)
21             for(k = j + 1; k < seqLen; k++)
22             {
23                 if(seqs[i][k] < seqs[i][j])
24                     inversions[i]++ ;
25             }
26 
27         sortSeqs[i] = i ;
28     }
29 
30     /* 插入排序 */
31     for(i = 0; i < seqNum; i++)
32     {
33         min = i ;
34         for(j = i + 1; j < seqNum; j++)
35         {
36             if(inversions[sortSeqs[j]] < inversions[sortSeqs[min]])
37                 min = j ;
38         }
39         
40         tmp = sortSeqs[i] ;
41         sortSeqs[i] = sortSeqs[min] ;
42         sortSeqs[min] = tmp ;
43     }
44     
45     for(i = 0; i < seqNum; i++)
46         printf("%s\r\n", seqs[sortSeqs[i]]) ;
47 
48     return 0 ;
49 }

 

POJ-1007: DNA Sorting 详解1: 插入排序法

标签:

原文地址:http://www.cnblogs.com/codesworld/p/4715198.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!