Vì máy tính số phụ thuộc vào bộ lưu trữ số, và có xu hướng bị giới hạn về kích thước và tốc độ bộ nhớ, lịch sử của bộ lưu trữ dữ liệu máy tính gắn liền với sự phát triển của máy vi tính. Cấp độ phát triển của phần cứng máy tính đã thúc đẩy việc sử dụng công nghệ trên toàn thế giới. Thậm chí khi hiệu suất đã tăng lên, giá cả lại giảm xuống10, cho đến khi máy tính trở thành tiện nghi, tiếp cận đến ngày càng nhiều các lĩnh vực11 của con người trên thế giới. Phần cứng máy tính do đó trở thành một nền tảng để sử dụng hơn là để tính toán, như tự động hóa, thông tin liên lạc, điều khiển, giải trí, và giáo dục. Mỗi lĩnh vực đến phiên nó lại có những yêu cầu riêng cho phần cứng, rồi phần cứng sẽ tiếp tục phát triển để đáp ứng các yêu cầu đó
Trang 1CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT
Phương pháp chọn trực tiếp và phương pháp chèn trực tiếp
Cho dãy số 18 7 6 9 2 10 13
Trình bày chương trình biến đổi dãy số trên thành dãy số có thứ tự giảm dần theo hai pp chọn trực tiếp và chèn trực tiếp
Chọn trực tiếp
- Chọn số lớn nhất: chọn số lớn nhất từ ni tới n-1
- For (1=1;i<n;i++), for(j=0,j<i;j++)
- If(a[j]<a[i]
- Pos=j;
QUICKSORT
Sắp xếp dựa trên sự phân hoạch
Ý tưởng: sử dụng kĩ thuật đệ quy
Dãy 1< x
Dãy 2=x
Dãy 3>x
Dãy 1 và dãy 3 có nhiều hơn 1 phần tử tiếp tục phân loại thành 3 dãy như trên(gọi đệ quy)
Phần tử x: là một giá trị trung bình của các phần tử trong dãy Hay chọn ngay x là phần tử giữa
X=a[(left+right)/2]
Left=0; right=n-1
Thuật toán:
B1: Left=0
Trang 2B2: Right=n-1
B3: Left>= Right
Bước kết thúc
B4: X=a[(left+right)/2]
B5: i=left
B6: Nếu A[i]<x
chỉ cần tăng i lên rồi quay lại B6 xét phần tử kế tiếp
ngược lại: nếu A[i]>x( sai vị trí chuyển sang bước 7)
B7:cho j= right
B8: nếu A [J]>X thì giảm j xuống để xét các phần tử tiêp theo( quay lại bước 8) Ngược lại: nếu A[j]<X thực hiện b9
B9: so sánh i và j Nếu i<=j đổi chỗ giữa A[i] và A[j] (quay trở lại b6)
Tăng i, giảm j
Ngược lại thực hiện B10: phân hoạch cho dãy bên trái(left to j) và phân hoạch cho dãy bên phải(i tới right)
Bước kết thúc