2013-02-09 30 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]; 

如果你有一个类,那么你可以重载下标运算符与任何你喜欢的类型!

相关问题