Mô phỏng thuật toán sắp xếp dãy số không giảm với N = 10 và dãy A : 6,1,5,3,7,8,10,7,12,4 . Hãy cho biết với lần duyệt thứ mấy để sắp xếp thành 1,3,4,5,6,7,7,8,10,12
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
Mọi người giúp em với được không ạ!
ĐỀ 1: CHẠY THUẬT TOÁN MÔ PHỎNG SẮP XẾP DÃY SỐ THEO DỮ KIỆN SAU:
Input: N = 8; A = [ 8 9 3 6 5 2 7 4 ]
Output: A = [ 2 3 4 5 6 7 8 9 ]
Duyệt 1:
#include <bits/stdc++.h>
using namespace std;
long long a[1000],n,i,tam,j;
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 các số sau: 4 7 9 1 6 3
Dựa vào thuật toán sắp xếp bằng tráo đổi để được 1 dãy tăng, hãy cho biết sau lần duyệt thứ mấy ta thu được dãy A tăng: 1 3 4 6 7 9
A.3
b.4
c.6
d.5
Cho dãy A gồm các số sau: 4 7 9 1 6 3
Dựa vào thuật toán sắp xếp bằng tráo đổi để được 1 dãy tăng, hãy cho biết dãy thu được sau lần duyệt 1 và duyệt 2?
10 Mô phỏng thuật toán sắp xếp bằng tráo đồi dãy A{N=7}:7,5,4,8,11,9,2
Viết ba chương trình mô phỏng các thuật toán sắp xếp chèn, sắp xếp chọn và sắp xếp nổi bọt mà em đã biết. Cho biết thời gian thực tế thực hiện các chương trình trên với bộ dữ liệu đầu vào là dãy A = [3, 1, 0, 10, 13, 16, 9,7, 5, 11]
*Thuật toán sắp xếp chèn (Insertion Sort):
import time
def insertion_sort(arr):
n = len(arr)
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
# Dãy số nguyên đầu vào
A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 1]
# In dãy số nguyên trước khi sắp xếp
print("Dãy số nguyên trước khi sắp xếp:", A)
# Bắt đầu đo thời gian thực hiện thuật toán
start_time = time.time()
# Gọi hàm sắp xếp chèn
insertion_sort(A)
# Kết thúc đo thời gian thực hiện thuật toán
end_time = time.time()
# In dãy số nguyên sau khi sắp xếp
print("Dãy số nguyên sau khi sắp xếp:", A)
# In thời gian thực hiện thuật toán
print("Thời gian thực hiện thuật toán: {:.6f} giây".format(end_time - start_time))
Thời gian thực hiện là 0 giây
*Thuật toán sắp xếp chọn:
import time
def selection_sort(arr):
n = len(arr)
for i in range(n):
min_idx = i
for j in range(i + 1, n):
if arr[j] < arr[min_idx]:
min_idx = j
arr[i], arr[min_idx] = arr[min_idx], arr[i]
# Dãy số nguyên đầu vào
A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 1]
# In dãy số nguyên trước khi sắp xếp
print("Dãy số nguyên trước khi sắp xếp:", A)
# Bắt đầu đo thời gian thực hiện thuật toán
start_time = time.time()
# Gọi hàm sắp xếp chọn
selection_sort(A)
# Kết thúc đo thời gian thực hiện thuật toán
end_time = time.time()
# In dãy số nguyên sau khi sắp xếp
print("Dãy số nguyên sau khi sắp xếp:", A)
# In thời gian thực hiện thuật toán
print("Thời gian thực hiện thuật toán: {:.6f} giây".format(end_time - start_time))
Thời gian thực hiện là: 0 giây
*Thuật toán sắp xếp nổi bọt:
import time
def bubble_sort(arr):
n = len(arr)
for i in range(n - 1):
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
# Dãy số nguyên đầu vào
A = [3, 1, 0, 10, 13, 16, 9, 7, 5, 1]
# In dãy số nguyên trước khi sắp xếp
print("Dãy số nguyên trước khi sắp xếp:", A)
# Bắt đầu đo thời gian thực hiện thuật toán
start_time = time.time()
# Gọi hàm sắp xếp nổi bọt
bubble_sort(A)
# Kết thúc đo thời gian thực hiện thuật toán
end_time = time.time()
# In dãy số nguyên sau khi sắp xếp
print("Dãy số nguyên sau khi sắp xếp:", A)
# In thời gian thực hiện thuật toán
print("Thời gian thực hiện thuật toán: {:.6f} giây".format(end_time - start_time))
Thời gian thực hiện là: 0 giây
1. Mô phỏng thuật toán sắp xếp dãy số sau: N=10 Dãy số: 25, 1, 63, 2, 120, 56, 223, 99, 443, 22
Cho dạy B gồm 10 số nguyên tử a1 đến a10 gồm các số hạng 4, 71, 3, 40, 50, 9, 8, 7,1. Hãy sử dụng thuật toán sắp xếp bảng cách tráo đổi để sắp xếp dãy B thành dãy giảm
#include <bits/stdc++.h>
using namespace std;
long long b[10],i,j,n;
int main()
{
n=10;
for (i=1; i<=n; i++)
cin>>b[i];
for (i=1; i<=n-1; i++)
for (j=i+1;j<=n;j++)
if (b[i]<=b[j]) swap(b[i],b[j]);
for (i=1; i<=n; i++)
cout<<b[i]<<" ";
return 0;
}
Thực hiện mô phỏng sắp xếp theo thuật toán sắp xếp chọn dãy sau: 4, 5, 2, 1, 3.
- Bước 1: i = 0;
- Bước 2: Tìm phần tử a[min] nhỏ nhất trong dãy hiện hành từ a[i] đến a[n-1].
- Bước 3: Đổi chỗ a[min] và a[i].
- Bước 4: Nếu i < n-1 thì gán i = i+1; rồi lặp lại bước 2, ngược lại -> Dừng.