64,648
社区成员
发帖
与我相关
我的任务
分享
#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
*/