Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- void nhap(int n, int A[]);
- void xuat(int n, int A[], int &dem);
- int phanTuNhoNhatMaLonHonX(int A[], int n, int viTri);
- void xuLy(int n, int A[], int &dem);
- void daoChuoi(int x, int n, int A[]);
- int main()
- {
- int n, dem = 1;
- printf("Nhap so luong phan tu cua mang !\n");
- scanf ("%d", &n);
- int* A = new int[n];
- nhap(n, A);
- xuLy(n, A, dem);
- delete[] A;
- printf("\nSo hoan vi la : %d\n ", dem);
- return 1;
- }
- void daoChuoi(int x, int n, int A[])
- {
- int j = n;
- for (int i = x; i < (n + x) / 2; i++)
- {
- int tmp = A[i];
- j = j - 1;
- A[i] = A[j];
- A[j] = tmp;
- }
- }
- int phanTuNhoNhatMaLonHonX(int A[], int n, int viTri)
- {
- int viTriMin=viTri;
- for (int j = viTri; j < n; j++)
- {
- if ((A[viTri - 1] < A[j]) && (A[j] < A[viTriMin]))
- {
- viTriMin = j;
- }
- }
- return viTriMin;
- }
- void xuLy(int n, int A[], int &dem)
- {
- int kt;
- do
- {
- kt = 0;
- for (int i = n - 1; i > 0; i--)
- {
- if (A[i] > A[i - 1])
- {
- kt = 1;
- if (i == n - 1)
- {
- int tmp = A[i];
- A[i] = A[i - 1];
- A[i - 1] = tmp;
- xuat(n, A, dem);
- break;
- }
- else
- {
- int viTri = phanTuNhoNhatMaLonHonX(A, n, i);
- int tmp = A[viTri];
- A[viTri] = A[i - 1];
- A[i - 1] = tmp;
- daoChuoi(i, n, A);
- xuat(n, A, dem);
- break;
- }
- }
- }
- } while (kt == 1);
- }
- void xuat(int n, int A[], int &dem)
- {
- dem++;
- for (int i = 0; i < n; i++)
- {
- printf("%d ", A[i]);
- }
- printf("\n");
- }
- void nhap(int n, int A[])
- {
- printf("Nhap lan luot cac phan tu cua mang !\n");
- for (int i = 0; i < n; i++)
- {
- scanf("%d", &A[i]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement