【发布时间】:2018-04-04 17:07:24
【问题描述】:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
void sortStrings(char arr[][MAX], int n)
{
char temp[MAX];
int j, i;
// Sorting strings using bubble sort
for (j=0; j<n-1; j++)
{
for (i=j+1; i<n; i++)
{
if (strcmp(arr[j], arr[i]) > 0)
{
strcpy(temp, arr[j]);
strcpy(arr[j], arr[i]);
strcpy(arr[i], temp);
}
}
}
}
int main(int argc, char *argv[])
{
char arr[][MAX] = {"GeeksforGeeks","Quiz","Practice","Gblogs","Coding"};
int n = sizeof(arr)/sizeof(arr[0]);
int i;
sortStrings(arr, n);
printf("Strings in sorted order are : ");
for (i=0; i<n; i++)
printf("\n String %d is %s", i+1, arr[i]);
return 0;
}
我直接从 GeeksForGeeks 获得此代码,用于冒泡排序“https://www.geeksforgeeks.org/sorting-strings-using-bubble-sort-2/” 我正在努力理解它。我了解二维数组如何工作的基本思想,其中第一个数组是索引,第二个数组是索引的内容。但是,我对发生了什么感到困惑
if (strcmp(arr[j], arr[i]) > 0)
{
strcpy(temp, arr[j]);
strcpy(arr[j], arr[i]);
strcpy(arr[i], temp);
}
我不明白 arr[][MAX] 中的 arr[j] 或 arr[i] 指的是什么
printf("\n String %d is %s", i+1, arr[i]);
我也对 arr[i] 的打印内容感到困惑。不应该确定哪个索引包含正在打印的内容吗?抱歉,如果我的问题令人困惑,我是 2D 数组的新手。
【问题讨论】:
-
这听起来可能没什么用,但我真诚地建议使用笔和纸并模拟一个简单的案例。
-
我想说我们在编程中并没有真正的意识形态:o