Sắp xếp các số thực: - 3 , 2 ; 1 ; - 1 2 ; 7 , 4 ; 0 ; - 1 , 5 . Theo thứ tự từ nhỏ đến lớn.
Em hãy thực hiện các công việc sau:
1. Tính số lần lặp của vòng lặp bên trong của thuật toán sắp xếp chèn tuyến tính.
2. Tính số lần lặp của vòng lặp ngoài của thuật toán sắp xếp chèn tuyến tính.
3. Ước lượng độ phức tạp thời gian của thuật toán sắp xếp chèn tuyến tính.
1. Tính số lần lặp của vòng lặp bên trong của thuật toán sắp xếp chèn tuyến tính.
2. Tính số lần lặp của vòng lặp ngoài của thuật toán sắp xếp chèn tuyến tính.
3. Ước lượng độ phức tạp thời gian của thuật toán sắp xếp chèn tuyến tính:
Vòng lặp for bên ngoài kiểm soát việc thực hiện đúng n-1 bước.
Vòng lặp while lồng bên trong thực hiện đồng thời cùng lúc hai việc a) và b) theo cách dịch chuyển dần từng bước sang trái, từ vị trí i tới vị trí k+1
Sắp xếp các số thực sau theo thứ tự từ nhỏ đến lớn:
\(-\frac{2}{3};\,\,\,\,\,4,1;\,\,\, - \sqrt 2 ;\,\,\,\,3,2;\,\,\,\,\,\pi ;\,\,\,\, - \frac{3}{4};\,\,\,\,\frac{7}{3}.\)
Ta có:
\(-\frac{2}{3} = -0,\left( 6 \right);\,\,\,\,\,4,1;\,\,\, - \sqrt 2 = - 1,414...;\,\,\,\,3,2;\\\pi = 3,141...;\,\,\,\, - \frac{3}{4} = - 0,75;\,\,\,\,\frac{7}{3} = 2,\left( 3 \right)\).
Do \( - 1,414... < - 0,75 < -0,\left( 6 \right) < 2,\left( 3 \right) < 3,141... < 3,2 < 4,1\)
Nên \( - \sqrt 2 < - \frac{3}{4} < -\frac{2}{3} < \frac{7}{3} < \pi < 3,2 < 4,1.\)
Ta có:
\(-\dfrac{2}{3}\approx-0,67;-\sqrt{2}\approx-1,41;-\dfrac{3}{4}=-0,75;\dfrac{7}{3}\approx2,33;\pi\approx3,14\)
Từ đó, ta có thứ tự sắp xếp:
\(-\sqrt{2};-\dfrac{3}{4};-\dfrac{2}{3};1;2;\dfrac{7}{3};3;\pi;4\)
Thực hiện quy đồng mẫu số ba phân số \(\frac{{ - 2}}{5};\frac{{ - 3}}{8};\frac{3}{{ - 4}}\) rồi sắp xếp các phân số đó theo thứ tự tăng dần.
Ta có:
\(\frac{{ - 2}}{5} = \frac{{ - 2.8}}{{5.8}} = \frac{{ - 16}}{{40}}\)
\(\frac{{ - 3}}{8} = \frac{{ - 3.5}}{{8.5}} = \frac{{ - 15}}{{40}}\)
\(\frac{3}{{ - 4}} = \frac{{ - 3}}{4} = \frac{{ - 3.10}}{{4.10}} = \frac{{ - 30}}{{40}}\)
Do -30 < -16 < -15 nên \(\frac{{ - 30}}{{40}} < \frac{{ - 16}}{{40}} < \frac{{ - 15}}{{40}}\). Do đó \(\frac{3}{{ - 4}} < \frac{{ - 2}}{5} < \frac{{ - 3}}{8}\).
Trên bảng dữ liệu ở Hình 2, em hãy thực hiện lần lượt các yêu cầu sau:
- Sắp xếp theo thứ tự tăng dần của cột Tốt.
- Sắp xếp theo thứ tự giảm dần của cột Sĩ số.
Hãy quan sát cách sắp xếp số lượng học sinh xếp loại tốt của các lớp có cùng sĩ số. Em hãy nhận xét về cách hiển thị dữ liệu trong bảng?
- Sắp xếp theo thứ tự tăng dần của cột Tốt
- Sắp xếp theo thứ tự giảm dần của cột Sĩ số
- Kết quả bảng dữ liệu được sắp xếp theo thứ tự trên một cột chính, nếu có nhiều dòng có giá trị khác nhau trên cột chính thì chúng sẽ được sắp xếp theo thứ tự trên cột phụ (khác với cột chính). Ví dụ, trong hoạt động trên, cột Sĩ số được coi là cột chính, cột Tốt là cột phụ. Do đó, cách sắp xếp số lượng học sinh xếp loại tốt của các lớp có cùng sĩ số theo thứ tự tăng dần của cột tốt.
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
Sắp xếp các số thực sau theo thứ tự từ nhỏ đến lớn: -1,75; -2; 0; 5 3 6 ; π ; 22 7 ; 5
Ta có: 5 < 9 = 3; 22/7 = 3,142857143..; π = 3,141592654…
Viết chương trình nhập một dãy số từ bàn phím, các số cách nhau bởi dấu cách, thực hiện sắp xếp dãy đã nhập theo một trong các thuật toán sắp xếp rồi in kết quả ra màn hình.
# Nhập dãy số từ bàn phím
lst = list(map(int, input("Nhập dãy số cách nhau bởi dấu cách: ").split()))
# Sắp xếp dãy số theo thuật toán sắp xếp chọn
for i in range(len(lst)):
min_idx = i
for j in range(i+1, len(lst)):
if lst[j] < lst[min_idx]:
min_idx = j
lst[i], lst[min_idx] = lst[min_idx], lst[i]
# In kết quả ra màn hình
print("Dãy số đã sắp xếp:", lst)
Hãy sắp xếp các bước đúng để thực hiện tính tổng các số dương trong dãy số
#include <bits/stdc++.h>
using namespace std;
long long i,n,t,x;
int main()
{
cin>>n;
t=0;
for (i=1; i<=n; i++)
{
cin>>x;
if (x>0) t=t+x;
}
cout<<t;
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.
sắp xếp các loại thực vật : chuối, lúa, thông, vạn tuế, hoa hồng, bưởi vào các ngành thực vậy phù hợp. Giải thích cho sự sắp xếp đó