繁体   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