算法学习笔记(二)字符串根据逆序排序

1.存放字符串数组的方法:

①使用二维数组char str[size][length],第一维指定字符串的数量,第二维指定字符串的长度,读入时,只需要将内容写入第一维,例如cin >> str[i]

②使用string类型,先加入头文件string,然后就可以定义字符串类型的变量,string变量还可以作为字符数组使用。


2.如果已知一些字符串和它们的逆序,要求按照逆序的升序排列字符串,就涉及到带有关联关系的排序问题,这里有一个好的解决办法是对逆序采用选择排序,每次找出逆序中的最小值,然后输出逆序对应的字符串,接着给这个最小的逆序值赋一个大于数组中任何数的值,再在数组中寻找最小值。为了简化问题,假设这些字符串的长度相等。实现代码如下:

#define NX_MAX 0XFFFFFF //用于赋值给逆序数组中的最小值
int string_count; //字符串的数量
int string_length; //字符串的长度
char string_table[string_count][string_length]; //假设字符串已经录入,注意,实际中不能这
//样给数组开辟内存空间,应该先预定义一个较大的数组
int nx_table[string_count]; //假设对应于上面数组的逆序已经求出
int i,j;
int min_index = 0; //存储最小的逆序索引
for(i = 0; i < string_count; i++)
{
     for(j = 0; j < string_count; j++)
         if(nx_table[j] < nx_table[min_index])
             min_index = j;
     cout << string_table[min_index] << endl;
     nx_table[min_index] = NX_MAX; //关键的一句,将已使用的逆序赋为不会再被找出的值
}

posted on 2014-12-31 20:49  张大大123  阅读(249)  评论(0编辑  收藏  举报

导航