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

xhz1234 2012-05-07 02:20:42

#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

*/
...全文
152 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xhz1234 2012-05-12
  • 打赏
  • 举报
回复
结贴了,

没分分了
hudesign 2012-05-07
  • 打赏
  • 举报
回复
还有?
支持英文数字 2012-05-07
  • 打赏
  • 举报
回复
我也来了,还没晚。哈哈~
漫步者、 2012-05-07
  • 打赏
  • 举报
回复
快点抢分,呵呵
liuxingyu2008pp 2012-05-07
  • 打赏
  • 举报
回复
解决了?
W170532934 2012-05-07
  • 打赏
  • 举报
回复
晕,我来迟了。
xhz1234 2012-05-07
  • 打赏
  • 举报
回复
已解决,前10个回复的,平均给分

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧