Thứ Sáu, 23 tháng 12, 2016

Bài tập 255-256: Sắp xếp mảng tăng dần | sắp xếp mảng giảm dần

#include <iostream>
using namespace std;

#define MAX 100

// MẢNG 1 CHIỀU 
// 1. HÀM NHẬP SỐ PHẦN TỬ
void NhapN(int &N)
{
 do
 {
  cout << "Moi ban nhap so phan tu cua mang N = ";
  cin >> N;

  // 0 < N <= MAX
  // Điều kiện phải ngược lại 
  if (N <= 0 || N > MAX)
   cout << "Nhap sai vui long nhap la 0 < N <= " << MAX << "\n";

 } while (N <= 0 || N > MAX);
}

// 2. HÀM NHẬP MẢNG
void NhapMang(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  cout << "A[" << i << "]= ";
  cin >> A[i];
 }
}

// 3. HÀM XUẤT MẢNG
void XuatMang(int A[], int N)
{
 for (int i = 0; i < N; i++)
 {
  cout << A[i] << "\t";
 }
}

void Swap_HoanVi(int &a, int &b)
{
 int t = a; a = b; b = t;
}

//255 Sắp xếp mảng tăng dần
void SapXep_Tang(int A[], int N)
{
 for (int i = 0; i < N - 1; i++)
 {
  for (int j = i + 1; j < N; j++)
  {
   if (A[i] > A[j])
    Swap_HoanVi(A[i], A[j]);
  }
 }
}
//256 sắp xếp mảng giảm dần
void SapXep_Giam(int A[], int N)
{
 for (int i = 0; i < N - 1; i++)
 {
  for (int j = i + 1; j < N; j++)
  {
   if (A[i] < A[j])
    Swap_HoanVi(A[i], A[j]);
  }
 }
}

void SapXep_Tang_ChiTiet(int A[], int N)
{
 for (int i = 0; i < N - 1; i++)
 {
  cout << "\n====================================================\n";
  cout << "\nStep i " << i + 1 << "\n";
  XuatMang(A, N);

  for (int j = i + 1; j < N; j++)
  {
   if (A[i] > A[j])
   {
    Swap_HoanVi(A[i], A[j]);
    cout << "\nStep j " << j << " : ";
    XuatMang(A, N);
   }
  }
  cout << "\n====================================================\n";
 }
}

int main()
{
 int Na = 0;
 NhapN(Na);

 int A[MAX];
 NhapMang(A, Na);
 cout << "MANG A BAN DAU\n";
 XuatMang(A, Na);
 cout << "\n";

 SapXep_Tang(A, Na);
 XuatMang(A, Na);
 cout << "\n";

 SapXep_Giam(A, Na);
 XuatMang(A, Na);
 cout << "\n";
 return 0;
}

Không có nhận xét nào:

Đăng nhận xét