Hãy sắp xếp dãy trên theo thứ tự không giảm

girlkute

New member
Xu
0
[h=1][/h]mn giúp mình nhé đây là viết thuật toán gồm các bước 1,2,3.... chứ không phải là viết chương trình pascal
đề: cho dãy N số nguyên a1,a2,...aN
hãy sắp xếp dãy trên theo thứ tự không giảm
 
Bước 1 gán các số vào dạng a(j)
Bước 2 gán j =1 rồi bắt đầu so sánh a(j) với a(j+1) nếu a(j)<= a(j+1) thì tiếp tục nếu a(j)>a(j+1) thì đổi chỗ hai số cho nhau rồi bắt đầu lại!
mình chỉ nhớ tới thế
 
Bước 1 gán các số vào dạng a(j)
Bước 2 gán j =1 rồi bắt đầu so sánh a(j) với a(j+1) nếu a(j)<= a(j+1) thì tiếp tục nếu a(j)>a(j+1) thì đổi chỗ hai số cho nhau rồi bắt đầu lại!
mình chỉ nhớ tới thế

Vòng lặp chưa chính xác bạn ạ, thuật toán sắp xếp có độ phức tạp là \[O_{n^{2}}\] nên bạn phải dùng 2 vòng lặp i và j lồng nhau chứ. 1 vòng lặp chỉ lặp đc 1 lần và dừng lại
 
Có rất nhiều thuật toán khác nhau, nếu bạn cần có thể tìm hiểu bằng các từ khóa quick sort, bubble sort, select sort, insertion sort,... Mỗi thuật toán có nhiều ưu và nhược điểm khác nhau. Tùy thuộc vào nhu cầu của bạn mà sử dụng. Bạn không yêu cầu thuật toán nào nên mình sẽ trình bày 1 thuật toán sắp xếp cơ bản (không có tên hehe). Cách viết thuật toán của mình chỉ theo dạng hiểu, không đúng cấu trúc đâu bạn nha.
Bước 1: Nhập mảng a, gán n = số giá trị của mạng
Bước 2: Gán i = 1
Bước 3: Nếu i >= n, kết thúc phần sắp xếp.
Bước 4: Gán j = i + 1.
Bước 5: Nếu j > n: i = i + 1 và quay lại bước 3.
Bước 6: Nếu a(i) < a(j), đổi giá trị tại 2 vị tri a(i) và a(j)
Bước 7: j = j + 1 và quay lại bước 5

Bạn có thể chạy thử trên giấy để xem cách hoạt động của thuật toán. Nếu có thắc mắc thì cứ trả lời tại chủ đề này, mình và mọi người sẽ cùng bàn luận.

Thân!
 

VnKienthuc lúc này

Không có thành viên trực tuyến.

Định hướng

Diễn đàn VnKienthuc.com là nơi thảo luận và chia sẻ về mọi kiến thức hữu ích trong học tập và cuộc sống, khởi nghiệp, kinh doanh,...
Top