算法學習筆記(二)字符串根據逆序排序

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; //關鍵的一句,將已使用的逆序賦爲不會再被找出的值
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章