Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
Em có thể thực hiện như sau:
- Duyệt qua từng phần tử của dãy từ đầu đến cuối.
- So sánh hai phần tử liền kề, nếu phần tử sau lớn hơn phần tử trước thì hoán đổi chúng.
- Tiếp tục duyệt qua các phần tử còn lại cho đến khi không còn phần tử nào cần hoán đổi.
- Lặp lại quá trình trên cho đến khi toàn bộ dãy được sắp xếp.
Hoặc:
-Duyệt qua từng phần tử của dãy từ đầu đến cuối.
-Lưu giá trị của phần tử hiện tại vào biến tạm thời.
-So sánh phần tử hiện tại với các phần tử bên trái, nếu phần tử nào lớn hơn phần tử hiện tại thì dời chúng sang phải một vị trí.
-Chèn giá trị của phần tử hiện tại vào vị trí đúng sau khi dời các phần tử.
-Tăng vị trí phần tử hiện tại lên 1 và lặp lại quá trình trên cho đến khi toàn bộ dãy được sắp xếp.
#include <bits/stdc++.h>
using namespace std;
long long n,i,a[1000];
int main()
{
cin>>n;
for (i=1; i<=n; i++) cin>>a[i];
sort(a+1,a+n+1);
for (i=n; i>=1; i--) cout<<a[i]<<" ";
return 0;
}
THAM KHẢO!
Một ý tưởng khác để kiểm tra xem dãy n số có phải là một hoán vị của dãy số 1, 2, ..., n hay không là sử dụng tính chất đặc biệt của hoán vị. Ta biết rằng một hoán vị của dãy số từ 1 đến n sẽ có các giá trị từ 1 đến n đúng một lần, tức là không có giá trị lặp lại và không có giá trị bỏ sót. Với ý tưởng này, ta có thể thiết kế thuật toán như sau:
-Đọc dãy số vào mảng a gồm n phần tử.
-Kiểm tra độ dài của dãy a có bằng n không. Nếu không bằng n, in ra "KHÔNG" và kết thúc thuật toán.
-Khởi tạo một mảng visited gồm n phần tử, với giá trị ban đầu là False. Mảng visited này sẽ được sử dụng để đánh dấu các số đã xuất hiện trong dãy a.
-Duyệt qua từng phần tử trong dãy a, đồng thời đánh dấu số đó đã xuất hiện trong dãy a bằng cách đặt giá trị True tại vị trí tương ứng trong mảng visited.
-Kiểm tra mảng visited. Nếu một trong các phần tử của visited là False, tức là có giá trị bị bỏ sót trong dãy a, in ra "KHÔNG" và kết thúc thuật toán.
-Sau khi kiểm tra xong mảng visited, in ra "CÓ" nếu không có giá trị nào bị bỏ sót, ngược lại in ra "KHÔNG".
-Thuật toán:
function kiemTraHoanVi(a):
n = len(a)
visited = [False] * n
# Kiểm tra độ dài của dãy a
if n != len(set(a)):
return "KHÔNG"
# Duyệt qua từng phần tử trong dãy a
for i in a:
# Nếu số i đã xuất hiện trong dãy a
if i < 1 or i > n or visited[i-1]:
return "KHÔNG"
visited[i-1] = True
# Kiểm tra mảng visited
if all(visited):
return "CÓ"
else:
return "KHÔNG"