2013-02-09 83 views
-3

我遇到了std:sort但它不適用於我的情況。我有一個2D浮點數組,其中我需要對一列進行排序。任何FLOATS排序算法都可以。不過,我在考慮合併排序。任何人?在C++中對二維數組中的浮點數進行排序

void selectionSort(float x[], int n) { 
float curr = 0, min = 0, i = 0, temp; 

for (curr = 0; curr < n-1; curr++) { 
    min = curr; // assume this is smallest 

    //--- Look over remaining elements to find smallest. 
    for (i = curr+1; i < n; i++) { 
     if (x[i] < x[min]) { 
      //--- Remember index for latter swap. 
      min = i; 
     } 
    } 

    //--- Swap smallest remaining element 
    temp = x[curr]; 
    x[curr] = x[min]; 
    x[min] = temp; 
}} 

VS 2010將輸出一個錯誤:下標不是整體式的

+1

[你有什麼嘗試?](http://whathaveyoutried.com) – 2013-02-09 04:27:52

+0

@JackManey我編輯了一個整數排序fxn,但它不適用於浮動。請檢查我更新的問題。謝謝! – Masochist 2013-02-09 04:28:44

+1

您是否嘗試先學習C++?而不是僅僅複製一些代碼,做一些小的修改,並希望它有效? – 2013-02-09 04:31:20

回答

2

C/C++不允許真實的數據類型(floatdouble等)作爲下標操作者申報的陣列的大小,或訪問。下面是一個錯誤:

int ArraySize[10.0]; 

因此以下內容:

ArraySize[4.0]; 

你必須通過一個整體式(intlongcharboolunsigned等)到指定大小和訪問元件。如果變量是真實的類型,你可以強制轉換它INT(或者,更優選size_t

float nIndex = 5.0; 
ArraySize[(size_t)nIndex]; 

如果你有一個類,那麼你可以重載下標運算符與任何你喜歡的類型!

相關問題