在c中对多维数组进行排序
发布时间:2020-12-16 09:49:01 所属栏目:百科 来源:网络整理
导读:我是编程的初学者,我有一个问题. 我必须创建二维数组[5] [3] … 让我们说这是其中一部分的例子: 2 3 4 7 8 9 5 6 7 然后我必须得到一些行并将其写在旁边: 2 3 4 9 7 8 9 24 5 6 7 18 现在,我必须按此总和对数组进行排序,因此结果如下所示: 7 8 9 24 5 6 7
我是编程的初学者,我有一个问题.
我必须创建二维数组[5] [3] … 让我们说这是其中一部分的例子: > 2 3 4 然后我必须得到一些行并将其写在旁边: > 2 3 4 9 现在,我必须按此总和对数组进行排序,因此结果如下所示: > 7 8 9 24 我不知道如何实现这一点,这是我的代码: #include <iostream> #include <time.h> using namespace std; void tocke(int polje[5][3]) { int vsota; srand(time(NULL)); int sums[5]; for (int i = 0; i < 5; i++) { vsota = 0; cout << endl; cout << i + 1 << ". "; for (int j = 0; j < 3; j++){ polje[i][j] = (rand() % 10 + 1); vsota += polje[i][j]; sums[i] = vsota; cout << polje[i][j] << " "; } } } void urejaj(int polje[5][3]) { cout << "nnnn" << endl; int sums[5]; int vsota ; double temp; for (int i = 0; i < 5; i++) { vsota = 0; cout << endl; cout << i + 1 << ". "; for (int j = 0; j < 3; j++) { vsota += polje[i][j]; sums[i] = vsota; if (sums[i] < sums[i+1]) { temp = polje[i][j]; polje[i][j] = polje[i + 1][j]; polje[i + 1][j] = temp; } cout << polje[i][j] << " "; }cout << sums[i]; } } int main() { int polje[5][3]; tocke(polje); urejaj(polje); cout << "n"; system("pause"); return 0; } 第一个函数在字段中写入元素,第二个函数对字段进行排序. 解决方法
万一你仍然迷路,这是完整的程序:
#include <iostream> #include <ctime> #include <cstdlib> #include <iomanip> using namespace std; void display_matrix(int**,int,int); void gen_matrix(int**,int); void gen_matrix_sum(int**,int**,int); void sort_matrix(int**,int); int main() { srand(time(0)); int m=5,n=3; int** my_matrix = (int**)malloc(m*sizeof(int*)); for (int i=0; i<m; i++) my_matrix[i] = (int*)malloc(n*sizeof(int)); gen_matrix(my_matrix,m,n); display_matrix(my_matrix,n); cout << endl; int** my_matrix_sum = (int**)malloc(m*sizeof(int*)); for (int i=0; i<m; i++) my_matrix_sum[i] = (int*)malloc((n+1)*sizeof(int)); gen_matrix_sum(my_matrix_sum,my_matrix,n); display_matrix(my_matrix_sum,n+1); cout << endl; int** my_matrix_sorted = (int**)malloc(m*sizeof(int*)); for (int i=0; i<m; i++) my_matrix_sorted[i] = (int*)malloc((n+1)*sizeof(int)); sort_matrix(my_matrix_sorted,my_matrix_sum,n); display_matrix(my_matrix_sorted,n+1); cout << endl; } void display_matrix(int** my_matrix,int m,int n) { for (int i=0; i<m; i++) { for (int j=0; j<n; j++) cout << setw(2) << my_matrix[i][j] << " "; cout << endl; } } void gen_matrix(int** M,int n) { int random_limit = 10; for (int i=0; i<m; i++) for (int j=0; j<n; j++) M[i][j] = rand()%random_limit + 1; } void gen_matrix_sum(int** M,int** my_matrix,int n) { int aux[m]; for (int i=0; i<m; i++) aux[i] = 0; for (int i=0; i<m; i++) for (int j=0; j<n; j++) { M[i][j] = my_matrix[i][j]; aux[i] += M[i][j]; } for (int i=0; i<m; i++) M[i][n] = aux[i]; } void sort_matrix(int** my_matrix_sorted,int n) { int v_sum_values[m]; for (int i=0; i<m; i++) v_sum_values[i] = my_matrix[i][n]; int v[n]; int max = v_sum_values[0]; int index; for (int i=0; i<m; i++) { for (int j=0; j<m; j++) { if (v_sum_values[j]>max) { max = v_sum_values[j]; index = j; } } v_sum_values[index] = -1; v[i] = index; max = v_sum_values[i]; } for (int i=0; i<m; i++) for (int j=0; j<n+1; j++) my_matrix_sorted[i][j] = my_matrix[v[i]][j]; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |