*Tìm thuật toán với bài toán sắp xếp số nguyên dương giảm dần Giúp em với
Nếu cần xây dựng thuật toán cho bài toán sắp xếp dãy không tăng thì sẽ khác gì so với thuật toán sắp xếp dãy không giảm . GIÚP VỚI MỌI NGƯỜI ƠI!
Hai thuật toán đó sẽ ngược nhau
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;
}
Viết chương trình của thuật toán tìm kiếm nhị phân với dãy sắp xếp giảm dần.
def binary_search(arr, x):
left = 0
right = len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == x:
return mid
elif arr[mid] < x:
right = mid - 1
else:
left = mid + 1
return -1
# Sử dụng hàm để tìm kiếm giá trị 5 trong dãy sắp xếp giảm dần [9, 8, 6, 5, 3, 1]
arr = [9, 8, 6, 5, 3, 1]
x = 5
result = binary_search(arr, x)
if result != -1:
print("Element is present at index", str(result))
else:
print("Element is not present in array")
Mô tả thuật toán: bài toán cần khai báo những biến nào, xác định kieur dữ liệu của từng biến. VỚi bài toán sắp xếp thì ta cần biến trung gian để làm gì? Sử dụng vòng lặp for lồng nhau so sánh 2 số với nhau để sắp xếp tăng dần. Với toán Tìm Max sử dụng 1 biến Max để gán với giá trị nào ? so sánh giá trị nào? Để tìm ra số lớn nhất ? Trình bày các bước mô tả thuật toán ở dạng liệt kê hoặc sơ đồ khối?
1. thuật toán đếm số lượng phần tử bằng k trong dãy số nguyên.
2. mô phỏng thuật toán sắp xếp dãy giảm với bộ dữ liệu thử.
1:
-Bước 1: Nhập n và nhập dãy số, nhập k
-Bước 2: dem←0; i←1;
-Bước 3: Nếu a[i]=k thì dem←dem+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 dem
-Bước 7: Kết thúc
Viết lại các thuật toán sắp xếp trong bài theo thứ tự giảm dần.
- Gán i = 0
- Gán j = i + 1 và min = A[i]
- Nếu j < n:
+ Nếu A[j] < A[min] thì min = j
+ j = j + 1
+ Quay lại bước 3
- Đổi chỗ A[min] và A[i]
- Nếu i < n – 1:
+ Đúng thì i = i + 1 và quay lại bước 2
+ Sai thì dừng lại
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ước 1: Nhập dãy số từ a[1] tới a[3]
Bước 2: i←1; j←i+1
Bước 3: Nếu a[i]<a[j] thì đổi chỗ a[i] và a[j];
Bước 4: i←i+1; j←j+1
Bước 5: Nếu (i<=n-1) và (j<=n) thì quay lại bước 3
Bước 6: Xuất dãy số sau khi xếp
Bước 7: Kết thúc