如何使用冒泡排序和使用字符串对二维数组进行排序

时间:2019-05-04 00:07:09

标签: c arrays string 2d bubble-sort

我想要一个主程序,该程序使用E/AndroidRuntime: FATAL EXCEPTION: OkHttp Dispatcher Process: com.testing.fragmentapp, PID: 8148 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. (最多100个字符)读取10个名称,将它们保存到2D数组(scanf)中,然后调用具有以下算法的函数: bubbleort对2D数组进行排序。最后,我希望主程序打印排序后的2D数组。

该函数的原型为:

char[10][100]

有人可以告诉我代码吗?

void bubble_sort(str[][100]);

我希望输入10个名称,然后以递增的字母顺序将这10个名称作为输出。

1 个答案:

答案 0 :(得分:2)

这是我的答案,希望对您有用。

#include<stdio.h>
#include<string.h>
#include<stdlib.h>

#define SIZE 10

void bubble_sort(char str[SIZE][100]);

int main (void) 
{
    char names[SIZE][100];
    printf("The max length of name is 99\n");
    int i;
    for(i=0;i<SIZE;i++){
        printf("Enter names:");
        scanf("%99s",names[i]);
    }

    bubble_sort (names);

    for (int i = 0; i < SIZE; i++)
        printf ("%s\n", names[i]);
    return 0;
}

void bubble_sort (char str[SIZE][100])
{
    int i, j;
    char temp[100] = {0};

    for (i = 0; i < 10 - 1; i++) {
        for (j = 0; j < 10 - 1 - i; j++) {
             if (strcmp(str[j], str[j + 1]) > 0) {
                strcpy(temp, str[j]);
                strcpy(str[j], str[j + 1]);
                strcpy(str[j + 1], temp);
            }
        }
    }

}

上面的程序输出是:

Enter names:ca
Enter names:sd
Enter names:fgg
Enter names:cb
Enter names:dssd
Enter names:hgf
Enter names:jydt
Enter names:jdjy
Enter names:dgr  
Enter names:htr
ca
cb
dgr
dssd
fgg
hgf
htr
jdjy
jydt
sd