【发布时间】:2014-02-11 01:02:19
【问题描述】:
我还没有学习数据结构和算法课程,我在尝试做的事情上遇到了一些麻烦。
我有 2 个大数组,1 个是 char,大约有 80k-100k 个单词,第二个是 int 数组,具有相同数量的整数(例如,写在 words[502] 中的单词的出现次数写在 @ 987654324@)。
我必须对它们进行排序,使其对应单词的最大整数是第一个,第二大的第二个等等,是否可以不使用冒泡排序(对于这些数字来说太慢了)?
void bubble_sort(int n)
{
int i,j,temp;
char tempwordy[40]={0};
for(i=1;i< n;i++)
{
for(j=0;j< n-1;j++)
{
if(counters[j]>counters[j+1])
{
temp=counters[j];
counters[j]=counters[j+1];
counters[j+1]=temp;
strcpy(tempwordy,words[j]);
strcpy(words[j],words[j+1]);
strcpy(words[j+1],tempwordy);
}
}
}
}
【问题讨论】:
-
标准 C 库具有允许对数组进行排序的 qsort 函数。不要使用冒泡排序。
-
@jimmcnamara 你读过这个问题吗?
-
但是我必须对整数数组进行排序并使其成为 char 数组中的单词不会失去它们的价值 - 我将如何做到这一点?例如,如果最高整数在整数 [52] 中,那么我必须将它放在其数组的首位,以及单词 [52] 在其数组中的首位
-
@self 我今天不想做他的作业。他可以考虑一个结构数组,它们是指向两个数组中每个元素的指针,然后根据“计数”或单词对结构数组进行排序。是的,我确实读过这个问题。一部分是:使用冒泡排序或其他排序算法。其他就是答案。
标签: c arrays algorithm sorting qsort