簡體   English   中英

用strcmp排序並冒泡在C中二維數組

[英]Sort with strcmp and bubblesort a 2d array in C

我需要按字典順序對給定的二維數組(char crossword [40] [20])進行排序。
填字游戲[40] [20]包含:

TYPE
GUITARIST
VAIN
ROME
MARRIAGE
NOODLE
ANT
IN
PETROL
CUT
LIE
ATOM
MOUTH
ENVELOPE
IN
AT
AGE
ART
INTERIOR
AT
ROBBERY
AT
AIR
STIR
NO
IT
SMILE
NIGHT
ACE
MANDATORY
TO
NY
DO
OZONE
ON
UNDERWATER
NOUN

因此,填字游戲[0] [欄] =類型,填字游戲[1] [欄] = GUITARIST等。
並且必須轉換為這樣的字典順序:

ACE  
ANT  
...  
...  
...  
VAIN

當然我知道如何對1d數組進行冒泡排序,但是像上面的2d會發生什么?
我只需要這些行,以便單詞的字母保持原樣。 如果代碼包含strcmp,我將不勝感激。

int strcmp ( const char * str1, const char * str2 );

對於str1 < str2返回負值,對於str1 > str2 str1 = str2正值,對於str1 = str2零。

聽起來很有用。 請記住,C語言中的單詞只是char的數組。 因此,我們可以遍歷為索引執行strcmp (...)的單詞。

現在,我們幾乎在一維數組中處於相同的整數排序級別。

我們還需要一個temp變量(就像對整數進行標准冒泡排序一樣)。 在交換對象時,請記住使用strcpy()

因此,我們的代碼將看起來像

#define MAX 40

int i, j;

char temp[20];
for (i = 0; i < MAX-1; ++i)
{
    for (j = i+1; j < MAX; ++j)
    {
        if (strcmp (words[i], words[j]) > 0)
        {
            strcpy (temp, words[i]);
            strcpy (words[i], words[j]);
            strcpy (words[j], temp);
        }
    }
}

注意:-尚未由我測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM