二维数组的四种表示方法及二维数组的排序问题
研究二维数组的排序问题
二维数组的四种表示方法
第一种一维数组表示二维数组
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
YiWi[i * n + j];
}
}
第二种静态的表示二维数组
ErWei[i][j]
第三种动态的表示二维数组
申请空间
int** a2 = new int*[rows]; int** a2 = (int **)malloc(sizeof(int*) * n);
for(int i=0;i<rows;i++) 再利用for循环开辟每一行中的列指针
a2[i] = new int[columns]; for (int i = 0; i < m; i++) {
释放空间 a2[i] = (int*)malloc(sizeof(int) * m);
}
for(int i=0;i<rows;i++) for (int i = 0; i < m; i++) {
delete []a2[i]; free(a2[i]);
}
delete []a2; free(a2);
第四种vector
int i,j;
vector<vector<int>> array(5);
for (i = 0; i < array.size(); i++)
array[i].resize(3);
二维数组的排序(整体排序)
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
YiWei[i * n + j];
}
}
sort(YiWei, YiWei + (m * n));
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
ErWei[i][j] = YiWei[i * n + j];
}
}
不整体排序
xq[100][2];
bool cmp(int* a, int* b) {
return a[0] > b[0];
}