字串排序

2021-09-13 15:17:17 字數 1530 閱讀 7348

該程式可以對輸入的字串進行排序,windows中以ctrl+z結束。程式的思路是利用指標陣列,指向儲存在alloc函式分配的空間中的字串,使用qsort函式進行比較。在qsort函式中,將key也就是待回歸的值變為指標變數來儲存指標陣列中的位址,然後利用這個位址和其它指標陣列中的位址傳進strcmp函式中,來逐字比較字串的大小,最後進行指標指向位址的交換。readline函式主要起乙個讀入輸入的值以及為它們分配空間的作用,所以它包含alloc函式和getline函式,該函式最後返回讀入字串的行數。writeline函式主要起將指標陣列指向的字串輸入的作用。afree函式在這個程式中並未使用,因為沒有其它需要重新從頭寫入的操作,alloc函式的缺點就是分配空間的方式是一種假的晚繫結,不管是否使用該函式,它永遠會占用空間,不過在目前,可以用於理解記憶體分配是如何進行的。

下面是**段:

#include #include #include #define maxline 100

#define maxlen 1000

char *lineptr[maxline];

int readline(char **lineptr, int maxlines);

void writeline(char **pstr, int length);

void qsort(char **pstr, int left, int right);

int main()

else

return 0;

}int getline(char *pstr, int length)

if(c == '\n')

pstr[nidx] = '\0';

return nidx;

}int readline(char **lineptr, int maxlines)

else

}return nlines;

}void writeline(char **pstr, int length)

}void qsort(char **pstr, int left, int right)

int i = left;

int j = right;

char *key = pstr[left];

while(i < j)

pstr[i] = pstr[j];

while(i < j && strcmp(key, pstr[i]) >= 0)

pstr[j] = pstr[i];

}pstr[i] = key;

qsort(pstr, left, i - 1);

qsort(pstr, i + 1, right);

}#define allocsize 100000

static char challocbuf[allocsize];

static char *allocp = challocbuf;

char *alloc(int nsize)

else

}void afree(char *pstr)

}

字串 字串排序

頻率統計 將頻率轉換為索引 資料分類 回寫頻率統計 統計每個字元出現的次數 將頻率轉換為索引 確定不同字元首位置 從右到左檢查檢查鍵中的字元 public class lsd public class msd public static void sort string a private stat...

《演算法》 字串 字串排序

輸入字串和字串對應的組別 組別也是字串的鍵 在滿足組別有小到大排序的情況下,將字串按字母順序排序 第一步,記錄組別的頻率 為了得到某個字串在排序後的範圍,比如組別2肯定在組別1後面,在組別3前面,把每個組別有多少個人記錄下來,方便我們定位 第三步,分類 該組別的位置起點 向後挪一位 因為當前位被用了...

字串排序

從鍵盤輸入10個學生的姓名和成績,請按字典序排列學生的姓名並輸出 姓名和成績對應關係保持不變 輸入共11行,前10行每行是乙個學生的姓名,最後一行是10個用空格分開的整數表示對應的10個學生成績。輸出姓名按字典序排列後的學生姓名和成績,共10行,每個學生的姓名和成績佔一行,姓名和成績間用逗號分開。b...