คำอธิบายปัญหา
เรียงแถว (Rows) แบบ Ascending (น้อยไปมาก) และเรียงคอลัมน์ (Columns) แบบ Descending (มากไปน้อย) ขนาดและองค์ประกอบรับจากผู้ใช้
ตรรกะการเรียง
- Rows Ascending: สำหรับแต่ละแถว ใช้ Bubble Sort แถวเดียว
- Columns Descending: สำหรับแต่ละคอลัมน์ ใช้ Bubble Sort คอลัมน์เดียว (เปรียบเทียบแนวตั้ง)
โค้ดตัวอย่าง
#include <stdio.h>
void main() {
int i, j, k, a, m, n;
static int ma[10][10], mb[10][10];
printf("Order of matrix (m n): "); scanf("%d %d", &m, &n);
printf("Elements:\n");
for (i = 0; i < m; i++)
for (j = 0; j < n; j++) {
scanf("%d", &ma[i][j]);
mb[i][j] = ma[i][j]; // copy สำหรับเรียงคอลัมน์
}
// เรียงแถว Ascending
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
for (k = j+1; k < n; k++)
if (ma[i][j] > ma[i][k]) {
a = ma[i][j]; ma[i][j] = ma[i][k]; ma[i][k] = a;
}
// เรียงคอลัมน์ Descending
for (j = 0; j < n; j++)
for (i = 0; i < m; i++)
for (k = i+1; k < m; k++)
if (mb[i][j] < mb[k][j]) {
a = mb[i][j]; mb[i][j] = mb[k][j]; mb[k][j] = a;
}
// แสดงผล (略)
}
ผลลัพธ์ตัวอย่าง
Input 3x4: 1 2 3 4 1 2 3 4 5 1 2 3 Rows Ascending: 1 2 3 4 1 2 3 4 1 2 3 5 Columns Descending: 5 2 3 4 1 2 3 4 1 1 2 3