小编Sup*_*can的帖子

确定与数组中的间隔匹配的值的最快方法

我有一个intx到的排序数组y(元素的值是随机的,但使用升序排列qsort())。程序接收各种间隔,例如<10;50><50;100>。我有以下简单for循环来确定数组中的值是否在设置的时间间隔内,如果是,则将其添加到计数器中。

 for(int i = 0; i < arraySize ;i++ )  {        
       if (points[i] >= interval1 && points[i] <= interval2){
            counter++;               
        }
    }
Run Code Online (Sandbox Code Playgroud)

我需要比O(n)在数组中搜索并确定in points[i]中的值是否在设置的时间间隔中更快的方法。该值可以是数百万,因此会大大降低。

数组中的元素范围可以从0到1000000000(1e9)。间隔分别。

c arrays performance

5
推荐指数
1
解决办法
1176
查看次数

对负值使用计数排序?(降序排列)

我有一个计数排序,它应该为x > 0,它按降序对我的数组进行排序。然而,在考虑负数时,我的实现逻辑会崩溃,因为我正在处理辅助数组中的负索引values。我想以某种方式使用uint但我对它不是很熟悉。

我怎样才能克服这个使用计数排序

static void countingSort(int[] arr)    
{
    int i, j, max = -1; // I think it falls apart about here 
    int[] values;

    for (i = 0; i < arr.Length; i++)
        if (arr[i] > max) max = arr[i];

    values = new int[max + 1];

    //Here it reaches for a negative index when i = 2,looking for -6.            
    for (i = 0; i < arr.Max(); i++)
        values[arr[i]]++; 

    i = 0; j …
Run Code Online (Sandbox Code Playgroud)

c# sorting counting-sort

2
推荐指数
1
解决办法
8281
查看次数

使用 malloc 的动态 2D 字符数组

我有以下可以动态分配单个句子的代码:

int  size=1;
char * text = (char*) malloc(size * sizeof(char));

size = (int)sizeof(text);

fgets(text, si, stdin);

//remove new line()

printf ("Sentence = <%s>\n", text);
Run Code Online (Sandbox Code Playgroud)

我希望能够分配和存储以 '\n' 结尾的多行以进一步使用(格式),我不知道我将分配多少行或它们有多长。行的输入以EOF 结束。它不必与 fgets 一起使用。例如:

  • 句子1\n
  • 句子2\n ....等等

有任何想法吗?

c arrays fgets getline multidimensional-array

1
推荐指数
1
解决办法
2843
查看次数