我有一个int从x到的排序数组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)。间隔分别。
我有一个计数排序,它应该为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) 我有以下可以动态分配单个句子的代码:
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 一起使用。例如:
有任何想法吗?