将未分类的连续字符串数组写入文件中

时间:2015-06-16 17:58:59

标签: c arrays algorithm performance sorting

我得到一个包含无序连续数字的字符串数组(范围从0到n)
例如 - [7a, 1b, 2c, 0d, 6e, 5f, 3g, 4h] 我想按顺序将数字写入文件
后例:
0d
1b
2c
3g
{{1 }} {
{1}} {
{1}} {
{1}}

我试图找到一种方法来快速完成并且不占用太多空间 我发现了一种可以在O(n)空间复杂度和O(n)性能方面做到这一点的方法 (我创建一个包含n个单元格的数组,并将每个数字插入到他的单元格编号)
arr [cell] = cell
但我正在寻找一种更好的方法来做到这一点,如果你能提供帮助我会感激不尽。

由于

2 个答案:

答案 0 :(得分:1)

由于数字是连续的,你根本不需要数组。

您只需要找到数组中的最小最大元素。知道minmax后,您可以将范围内的数字写入文件。这仍然是O(n)时间,但没有额外的空间复杂性。如果min总是0,那么您只需要数组中最大的数字。

答案 1 :(得分:0)

由于数字是连续的,因此无需验证数组中是否存在,因此您可以使用sizeof(array)/sizeof(array[0])来了解数组长度,然后您可以像这样执行for循环:< / p>

int writeNum(int* nums){
  FILE *f = fopen("yourfile.txt");
  if(f == NULL) return 0;
  for(int n = sizeof(nums)/sizeof(nums[0]), i = 0; i < n; i++){
    fprintf(f,"%d\n",i);
  }
fclose(f);
return 1;
}