回覆列表
  • 1 # 小紅的甜心

    一、演算法設計:

    1、輸入10個字串;

    2、任選一種排序演算法對字串排序,比較時需要使用strcmp, 複製時需要使用strcpy。

    3、輸出排序後的結果。

    二、演算法最佳化:

    字串比較必須使用strcmp,這一點無法最佳化。 但每次將字串整體複製,交換值,效率偏低,所以可以使用字元指標陣列儲存每個字串的地址,排序時交換指標即可。

    另外,輸入時可以同步完成排序操作。

    三、參考程式碼:

    #include <stdio.h>

    #include <string.h>

    int main()

    {

    char a[10][100];//10個字串空間,每個最長限制為100個位元組。

    char *p[10];//字元指標陣列。

    int i,j;

    char *t;

    for(i = 0; i < 10; i ++)

    {

    scanf("%s",a[i]);//輸入第i個字串。

    t=a[i];

    for(j = i-1; j>=0; j--)//查詢插入的位置。

    if(strcmp(p[j], t)<=0) break;//從小到大按字典序排序。

    else p[j+1]=p[j];//後移一位。

    p[j+1] = t;//插入。

    }

    //迴圈結束後,p中就是排序好的10個字串。

    for(i = 0; i < 10; i ++)

    {

    printf("%s\n", p[i]);

    }//輸出結果。

    return 0;

  • 中秋節和大豐收的關聯?
  • 汽車水箱頂有一個加水口,另一頭膠皮管連線發動機的是回水管嗎?