Viết thuật toán sắp xếp đây số A(a1, a2, ..aN) theo chiều giảm dân
Mn giúp e với ạ
Bài 1. Cho dãy số a1,a2,...an. Sắp xếp thành dãy giảm dần Bài 2. Cho dãy a1,a2,a3...an gồm n số nguyên dương. -Sắp xếp các số chẵn về đầu hàng tăng dần -Sắp xếp các số lẻ về cuối hàng giảm dần GIÚP EM VỚI Ạ :(((
Bài 1:
#include <bits/stdc++.h>
using namespace std;
long long a[100],n,i,j,tam;
int main()
{
cin>>n;
for (i=1; i<=n; i++)
cin>>a[i];
for (i=1; i<=n-1; i++)
for (j=i+1; j<=n; j++)
if (a[i]<a[j]) swap(a[i],a[j]);
for (i=1; i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
Cho dãy A gồm N số nguyên a1 a2...aN hãy sắp xếp theo thứ tự tăng dần. Xác định bài toán ,giải bằng cách liệt kê. Giúp em với ạ
Input: N và dãy số nguyên a1, a2,..., aN
Ouput: dãy số sắp xếp theo thứ tự tăng dần
B1: Nhập vào n và dãy số nguyên a1, . . . ,aN;
B2: M ← N;
B3: Nếu M<2 thì in dãy đã sắp xếp rồi kết thúc;
B4. M ← M – 1; i ← 0;
B5: i ← i + 1;
B6: Nếu i > M thì quay lại bước 3;
B7. Nếu ai > ai+1 thì tráo đổi cho nhau;
B8: Quay lại bước 5;
Bạn có một hoán vị: một mảng a = [a1, a2,…, an] gồm các số nguyên phân biệt từ 1 đến n. Độ dài của hoán vị n là số lẻ. Hãy xem xét thuật toán sắp xếp hoán vị theo thứ tự tăng dần sau đây. Thủ tục trợ giúp của thuật toán, f (i) , nhận một đối số duy nhất i (1≤i≤n − 1) và thực hiện như sau. Nếu ai> ai + 1, giá trị của ai và ai + 1 được trao đổi. Nếu không, hoán vị không thay đổi. Thuật toán bao gồm các lần lặp, được đánh số bằng các số nguyên liên tiếp bắt đầu bằng 1 . Trên tôi -lặp lại thứ, thuật toán thực hiện như sau:
nếu tôi là số lẻ, gọi f (1), f (3),…, f (n − 2) ;
nếu tôi là chẵn, gọi f (2), f (4),…, f (n − 1) .
Có thể chứng minh rằng sau một số lần lặp lại hữu hạn, hoán vị sẽ được sắp xếp theo thứ tự tăng dần. Sau bao nhiêu lần lặp lại điều này sẽ xảy ra lần đầu tiên?
Input:
Đầu vào Mỗi thử nghiệm chứa nhiều trường hợp thử nghiệm. Dòng đầu tiên chứa số lượng trường hợp thử nghiệm t (1≤t≤10 ^ 4 ). Sau đây là mô tả các trường hợp kiểm thử. Dòng đầu tiên của mỗi trường hợp kiểm tra chứa một số nguyên n (3≤n≤2⋅10 ^ 5−1; n là lẻ) - độ dài của hoán vị. Dòng thứ hai chứa n các số nguyên phân biệt a1, a2,…, an (1≤ai≤n ) - hoán vị chính nó. Đảm bảo rằng tổng của n trên tất cả các trường hợp thử nghiệm không vượt quá 2⋅10 ^ 5−1
Output:
. Đầu ra Đối với mỗi trường hợp thử nghiệm, in số lần lặp lại mà sau đó hoán vị sẽ được sắp xếp theo thứ tự tăng dần lần đầu tiên. Nếu hoán vị đã cho đã được sắp xếp, hãy in ra 0.
Input:
3
3
3 2 1
7
4 5 7 1 3 2 6
5
1 2 3 4 5
ouput:
3
5
0
Ghi chú Trong trường hợp thử nghiệm đầu tiên, hoán vị sẽ thay đổi như sau: sau 1 lần lặp -st: [2,3,1] ; sau 2 -nd lần lặp: [2,1,3] ; sau 3 -lặp lại thứ ba: [1,2,3] . Trong trường hợp thử nghiệm thứ hai, hoán vị sẽ thay đổi như sau: sau 1 lần lặp -st: [4,5,1,7,2,3,6] ; sau 2 -nd lần lặp: [4,1,5,2,7,3,6] ; sau 3 -lặp lại thứ ba: [1,4,2,5,3,7,6] ; sau 4 -lần lặp thứ: [1,2,4,3,5,6,7] ; sau 5 -lặp lại thứ: [1,2,3,4,5,6,7] . Trong trường hợp thử nghiệm thứ ba, hoán vị đã được sắp xếp và câu trả lời là 0 .
gốc: https://codeforces.com/problemset/problem/1558/F
Cho dãy A gồm N số nguyên gồm a1, a2,..., an. Viết thuật toán sắp xếp thành dãy không giảm. Cho N=5, a1=9, a2=6, a3=4, a4=8, a5=2. Mô phỏng thuật toán của sắp xếp thành dãy không giảm
Thuật toán sắp xếp của bạn là kiểm tra và đổi chỗ 2 vị trí liền nhau nếu vị trí sau lớn hơn vị trí trước qua n−1n−1 bước
Bước 1 kiểm tra và đổi chỗ n−1n−1 cặp (a1,a2);(a2,a3);..;(an−1,an)(a1,a2);(a2,a3);..;(an−1,an)
Sau bước 1 thì anan là bé nhất
Bước 2 tương tự như vậy nhưng chỉ xét đến an−1
Hãy viêt thuật toán sắp xếp N số hạng a 1 , a 2 , . . . . . , a n bằng cách tráo đổi
B.1 : Nhập N và các số hạng a 1 , a 2 , . . . . . , a n ;
B.2 : M ← N ;
B.3 : Nếu M ⟨ 2 thì đưa ra dãy A đã được sắp xếp rồi Kết thúc;
B.4 : M ← M-1 ; i ← 0 ;
B.5 : i ← i - 1 ;
B.6 : Nếu i > M thì quay lại bước 3;
B.7 : Nếu ai > ai+1 thì tráo đổi ai và ai+1 cho nhau;
B.8 : Quay lại bước 5;
Trình bày giải thuật sắp xếp phân đoạn (Quick Sort) để sắp xếp dãy số nguyên a1, a2, ..., an thành dãy không tăng.
số tự chọn ạ
#include <bits/stdc++.h>
using namespace std;
long long a[10000],n,i;
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;
}
Bài 3. Viết chương trình nhập từ bàn phím dãy số thực có N phần tử (1<N<100). hãy in ra màn hình
a. dãy số ban đầu đã nhập
b. dãy số đã sắp xếp lại. biết sắp xếp các phần tử theo nguyên tắc sau: a1 đổi chỗ cho an, a2 đổi chỗ cho an-1,...
Giúp mik với ạ!!! Mik cần gấp!!!Mik xin cảm ơn trước ạ!!!
#include <bits/stdc++.h>
using namespace std;
double a[100];
int i,n;
int main()
{
cin>>n;
for (i=1; i<=n; i++) cin>>a[i];
for (i=1; i<=n; i++) cout<<a[i]<<" ";
cout<<endl;
for (i=1; i<=n; i++)
swap(a[i],a[n+1-i]);
for (i=1; i<=n; i++) cout<<a[i]<<" ";
return 0;
}
Cho dãy A gồm N số nguyên a1 a2...aN hãy sắp xếp theo thứ tự giảm dần về giá trị . xác định bài toán ,giải bằng cách liệt kê,chỉ ra tính dừng của thuật toán giúp e với
Xác định bài toán:
Input: Dãy n số
Output: Sắp giảm dần của dãy số
Chỉ ra tính dừng của thuật toán
-Bước 1: Nhập n và nhập dãy số
-Bước 2: i←1;
-Bước 3: Nếu a[i]<a[i+1] thì đổi chỗ a[i] và a[i+1]
-Bước 4: i←i+1;
-Bước 5: Nếu i≤n thì quay lại bước 3
-Bước 6: Xuất dãy
-Bước 7: Kết thúc
Câu 2: Cho dãy A gồm N số nguyên a1, a2,…,an . Em hãy sắp xếp dãy số A thành dãy không tăng(KHÔNG GIẢM).Câu 3: Cuối năm học lớp 10 các bạn trong lớp đều có điểm trung bình môn. Ví dụ bạn A: 8.5, B:9.4, C: 7.8 ..., em hãy xây dựng thuật toán tìm ra bạn có điểm cao nhất.
2:
#include <bits/stdc++.h>
using namespace std;
long long a[1000],i,n;
int main()
{
cin>>n;
for (i=1; i<=n; i++) cin>>a[i];
sort(a+1,a+n+1);
for (i=1; i<=n; i++) cout<<a[i]<<" ";
cout<<endl;
for (i=n; i>=1; i--) cout<<a[i]<<" ";
return 0;
}