2012-10-02 74 views
0

我有一個非常簡單的(或者至少應該是)賦值,我必須在大量的隨機數上運行bubblesort並查看它的執行時間。然後我必須做同樣的事情,除了將數組分成一半,並在另一個線程中對另一個線程中的另一個線程進行排序,並且看看它是否更快。Bubblesort with C

我從來沒有使用C之前,所以我完全無能爲力指針,只有與Java一起工作。這裏是我的代碼,因爲我只是想讓bubblesort工作。

#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 
+0

'陣列[i] = 1;'我知道,通過公平的擲骰和所有的決定,但是這不是與「隨機數的陣列」旨在測試性能。 –

+0

哎呀,我改變了這一點,因爲我得到了一個錯誤,並忘記在發佈之前將它改回來。而不是一個我有rand()那裏,但它不喜歡那個。現在讓我改回它,看看錯誤是什麼。 – user1704677

回答

4

此:

int *array[50000]; 

聲明指針50000元素的數組來int,這可能不是你想要的。刪除*

bubbleSort()原型中,你也應該刪除虛假的星號。

請注意,星號意味着東西在C中,你不應該隨機裝飾你的代碼與他們在任何你想要的。如果你不確定什麼這意味着和,你應該有權訪問一些教程信息,如果這是一個類。開始閱讀。

+0

我原本一切都沒有指針。如果可能的話,我想避免它們。不幸的是,這不是一門介紹性課程,我們有時會被拋入火中,並期望知道C.當我從bubbleSort方法的數組和參數中刪除星號時,這裏是我得到的錯誤這讓我相信我需要星號。 'code'「bubbleSort。c「,第16行:標識符被重新聲明:bubbleSort current:function(指向int,int的指針)返回void 上一個:function()返回int:」bubbleSort.c「,第13行'code' – user1704677

1

線11:你不應該申報int *array[]int array[]代替
線13:原型的功能或聲明它的主要
線16以上:你宣佈int *array_size但在主你給它是一個int
行18,21和23:相同。
第28行:從不使用帶有可變格式字符串的printf! printf("%i, ", numbers[i]);就是這樣。

你真的應該檢查C編碼基礎

+0

謝謝。有些東西與我習慣的語言不同,我有一點工作要做,再次感謝。 – user1704677