0

我有一个非常简单(或者至少应该是)的任务,我必须在大量随机数上运行冒泡排序并查看它的性能时间。然后我必须做同样的事情,除了将数组分成两半,一半在一个线程中排序,另一半在另一个线程中排序,看看它是否更快。

我以前从未使用过 C,所以我对指针一无所知,只使用过 Java。这是我的代码,因为我只是想让冒泡排序工作。

#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <libgen.h>

int main() {
  int *array[50000];
  for(int i = 0; i < 50000; i++) {
    array[i] = 1;
  }
  bubbleSort(array, 50000);
}

void bubbleSort(int *numbers[], int *array_size) {
  int i, j, temp;
  for(i = (array_size - 1); i > 0; i--) {
    for(j = 1; j <= i; j++) {
  if(numbers[j-1] > numbers[j]) {
    temp = numbers[j-1];
    numbers[j-1] = numbers[j];
    numbers[j] = temp;
      }
    }
  }
  for(int i = 0; i < 10; i++) {
    printf(numbers[i]);
  }
}

我在这里要做的就是对数组进行排序,然后打印出前十个数字,这样我就知道它正在工作。我收到各种指针错误。

"bubbleSort.c", line 11: warning: improper pointer/integer combination: op "="
"bubbleSort.c", line 13: warning: implicit function declaration: bubbleSort
"bubbleSort.c", line 16: identifier redeclared: bubbleSort
        current : function(pointer to pointer to int, pointer to int) returning void
        previous: function() returning int : "bubbleSort.c", line 13
"bubbleSort.c", line 18: warning: improper pointer/integer combination: op "="
"bubbleSort.c", line 21: warning: improper pointer/integer combination: op "="
"bubbleSort.c", line 23: warning: improper pointer/integer combination: op "="
"bubbleSort.c", line 28: warning: argument #1 is incompatible with prototype:
        prototype: pointer to const char : "/usr/include/iso/stdio_iso.h", line 206
        argument : pointer to int
cc: acomp failed for bubbleSort.c
4

2 回答 2

4

这个:

int *array[50000];

声明一个包含 50,000 个元素的指针数组int,这可能不是您想要的。删除*.

bubbleSort()原型中,您还具有应该删除的虚假星号。

请注意,星号在 C 中表示某些东西,你不应该只是随意地用它们来装饰你的代码,无论你喜欢什么。如果您不确定的含义和时间,如果这是针对课程的,您应该可以访问一些教程信息。开始阅读。

于 2012-10-02T15:45:19.360 回答
1

第 11 行:您不应该声明,而是int *array[]13 行:原型化您的函数或在主线上方声明它第 16 行:您声明但在主线中您给它一个第 18、21 和 23 行:11相同。第 28 行:切勿将 printf 与可变格式字符串一起使用!就是这样。 int array[]

int *array_sizeint

printf("%i, ", numbers[i]);

你真的应该复习 C 编码基础

于 2012-10-02T15:49:18.257 回答