Hỏi đáp
Chia sẻ kiến thức, cùng nhau phát triển
Sắp xếp phần tử lẻ tăng dần, chẵn giảm dần (Mảng 1 chiều C#)
int[] iSoPTuMang1 = new int[10];
int[] iSoPTuMang2 = new int[10]; //mang chua phan tu chan
int[] iSoPTuMang3 = new int[10]; //mang chua phan tu le
int i, j = 0, k = 0, n, iTrungGian;
Console.Write("Sap xep cac phan tu co gia tri le tang dan\n");
Console.Write("Nhap kich thuoc mang:");
n = int.Parse(Console.ReadLine());
Console.Write("Nhap {0} phan tu vao mang:\n", n);
for (i = 0; i < n; i++)
{
Console.Write("Phan tu {0}:", i);
iSoPTuMang1[i] = int.Parse(Console.ReadLine());
}
for (i = 0; i < n; i++)
{
if (iSoPTuMang1[i] % 2 == 0)
{
iSoPTuMang2[j] = iSoPTuMang1[i];
j++;
}
else
{
iSoPTuMang3[k] = iSoPTuMang1[i];
k++;
}
}
for (i = 0; i < n; i++)
{
for (j = 0; j < n; j++)
{
if (iSoPTuMang2[i] < iSoPTuMang2[j])
{
iTrungGian = iSoPTuMang2[i];
iSoPTuMang2[i] = iSoPTuMang2[j];
iSoPTuMang2[j] = iTrungGian;
}
}
}
Console.Write("\nCac phan tu chan la: \n");
for (i = 0; i < j; i++)
{
Console.Write("{0} ", iSoPTuMang2[i]);
}
Console.Write("\nCac phan tu le la:\n");
for (i = 0; i < k; i++)
{
Console.Write("{0} ", iSoPTuMang3[i]);
}
Console.Write("\n\n");
Console.ReadKey();
}
}
}
Bạn tham khảo thuật toán sắp xếp rồi dùng điều kiện if để lọc chẵn lẻ
Thì bài toán sẽ tối ưu hơn đấy.
{
for (j = i + 1; j < n; j++)
{
if (iSoPTuMang2[i] < iSoPTuMang2[j])
{
iTrungGian = iSoPTuMang2[i];
iSoPTuMang2[i] = iSoPTuMang2[j];
iSoPTuMang2[j] = iTrungGian;
}
}
}
for (i = 0; i < n; i++)
{
for (k = i + 1; k < n; k++)
{
if (iSoPTuMang3[k] < iSoPTuMang3[i])
{
iTrungGian = iSoPTuMang3[i];
iSoPTuMang3[i] = iSoPTuMang3[k];
iSoPTuMang3[k] = iTrungGian;
}
}
}