读书人

对数据排序不知道错哪了求教高手

发布时间: 2012-05-13 16:39:43 作者: rapoo

对数据排序,不知道哪里错了,求教高手

C/C++ code
#include <cstdlib>#include <iostream>using namespace std;// 冒泡排序,对数组data排序/* \param data 要排序的数组 row行,3列 \param CountArray 数组data的统计信息 count行,2列 \param ResData 与数组data对应的相似度信息 1行,row列 \param row data的行数,ResData的列数 \param count CountArray的行数    根据ResData和CountArray数据对data进行冒泡排序*/void Sort_D_F(int **data, int **CountArray, double *ResData, int row, int count){    int temp[3] = {0, 0, 0}; // 临时变量    int i, j, k, t;      static int m = 0;    for(t=0; t<count; t++)    {        for(i=0; i<CountArray[t][1]-1; i++)        {            for(j=0; j<CountArray[t][1]-i-1; j++)            {                if((m+j) == row-1)                    break;                if(ResData[m+j] > ResData[m+j+1])                {                    for(k=0; k<3; k++)                    {                        temp[k] = data[m+j][k];                        data[m+j][k] = data[m+j+1][k];                        data[m+j+1][k] = temp[k];                    }                }            }        }     }}int main(){    int i, j;    int **data, **CountArray;    double *ResData;    int row = 12, count = 5;    data = new int*[row];    for(i=0; i<row; i++)        data[i] = new int[3];    CountArray = new int*[count];    for(i=0; i<count; i++)        CountArray[i] = new int[2];    ResData = new double[row];    // 测试数据    int D[12][3] = {{1,88,1},{2,137,2},{3,34,3},{3,111,3},{3,149,3},{4,31,4},{4,59,4},                         {5,25,5},{5,38,5},{5,67,5},{5,106,5},{5,167,5}};    double R[12] = {1,1,0.878183,0.634459,0.697758,0.771256,0.818767,0.490358,0.491005,0.481679,0.551321,0.470729};    int C[5][2] = {{1,1},{2,1},{3,3},{4,2},{5,5}};    // 将测试数据拷贝到相应的变量    for(i=0; i<row; i++)    {        ResData[i] = R[i];        for(j=0; j<3; j++)            data[i][j] = D[i][j];    }            for(i=0; i<count; i++)    {        for(j=0; j<2; j++)            CountArray[i][j] = C[i][j];    }    cout << "Data: ResData" << endl;    for(i=0; i<row; i++)    {        for(j=0; j<3; j++)            cout << data[i][j] << " ";        cout << ResData[i] << endl;    }        cout << "CountArray: " << endl;    for(i=0; i<count; i++)    {        for(j=0; j<2; j++)            cout << CountArray[i][j] << " ";        cout << endl;    }    // 调用排序函数    Sort_D_F(data, CountArray, ResData, row, count);    // 打印排序后的data数据    cout << "Data: ResData" << endl;    for(i=0; i<row; i++)    {        for(j=0; j<3; j++)            cout << data[i][j] << " ";        cout << endl;    }    // 释放内存空间    delete[] CountArray;    delete[] ResData;    delete[] data;    system("pause");    return 0;}/*data 数据如下[{1,88,1},{2,137,2},{3,34,3},{3,111,3},{3,149,3},{4,31,4},{4,59,4},{5,25,5},{5,38,5},{5,67,5},{5,106,5},{5,167,5}];ResData数据如下:{1,1, 0.878183, 0.634459, 0.697758, 0.771256,0.818767, 0.490358,0.491005,0.481679, 0.551321,0.470729};CountArray数据如下{{1,1},{2,1},{3,3},{4,2},{5,5}}用此例子: row = 12, count = 5*/


[解决办法]
晕,我来迟了。
[解决办法]
解决了?
[解决办法]
快点抢分,呵呵
[解决办法]
我也来了,还没晚。哈哈~
[解决办法]
还有?

读书人网 >C++

热点推荐