30/09/2018, 17:03

Vòng lặp sắp xếp

Bạn nào giải thích giúp mình chỗ vòng lặp mảng tăng và giảm với
1/ Tại sao lại cho i chạy từ 0 < n-1?
2/ Cho j = i+1 vậy có nghĩa là lúc mới vào thì nó chạy từ phần tử thứ 2 phải không?
http://codepad.org/Mc0jb6j9

Sáng Béo viết 19:12 ngày 30/09/2018

2 cái tăng và giảm bản chất là tương tự nhau, chỉ khác nhau chỗ điều kiện để đổi chỗ 2 phần tử.
Nên chỉ xét trường hợp sắp xếp mảng tăng nhé.

Mảng tăng thì các phần tử phía sau sẽ lớn hơn hoặc bằng phần tử phía trước.

Dùng 2 vòng lặp để sắp xếp, vòng đầu tiên cho i chạy lần lượt từ 0 đến n-2 , vòng bên trong thì cho j chạy hết các phần tử phía sau i, xét xem phần tử nào nhỏ hơn phần tử thứ i thì đổi chỗ cho i, vậy, sau khi vòng bên trong chạy hết 1 lượt thì ta có phần tử nhỏ nhất tính từ i -> hết mảng đã được đưa vào vị trí i. cứ như vậy i lại tăng, và lại có 1 vong lặp chạy sau i -> hết mảng để lấy phần tử nhỏ nhất trong cái đám còn lại cho vào vị trí i… cứ như vậy đến i=n-2 thì phần tử lớn nhất bị đẩy vào vị trí n-1, thế là được mảng như yêu cầu.

Với mảng giảm thì tương tự.

Tuấn Khanh viết 19:11 ngày 30/09/2018

Thanks cậu mình hiểu cái vòng lặp của nó rồi, nhưng ý chính của mình là muốn hỏi 2 câu này :3
1/ Tại sao lại cho i chạy từ 0 < n-1?
2/ Cho j = i+1 vậy có nghĩa là lúc mới vào thì nó chạy từ phần tử thứ 2 phải không?

*grab popcorn* viết 19:07 ngày 30/09/2018

i chạy đến n-2 (< n-1) vì
j=i+1;
nếu i chạy đến n-1 (< n) thì khi i = n-1;
j=i+1 = (n-1+1) = n -> tràn mảng

Tuấn Khanh viết 19:11 ngày 30/09/2018

Nhưng khi mình cho i nó bằng n-1 thì nó vẫn ra kết quả đúng mà cậu

Tuấn Khanh viết 19:19 ngày 30/09/2018

Mọi người giúp mình hiểu câu 1 và 2 với :’(

*grab popcorn* viết 19:15 ngày 30/09/2018

bạn chỉnh lại me=10;
nhập n=10 xem nó có tràn ko
với đọc lại thuật sắp xếp bubble sort luôn nha

Quân viết 19:19 ngày 30/09/2018
  1. Bạn thích cho i chạy từ 0 đến n-1 cũng được chả sao. Sẽ không bị tràn mảng vì ở vòng lặp thứ 2 đã có điều kiện j < n nên vòng cuối cùng sẽ không làm gì cả. Sở dĩ cho i < n - 1 vì nó tiết kiệm được 1 lần chạy.

  2. Đúng mà không đúng. Lúc mới vào nó sẽ chạy từ phần tử i + 1, tùy thuộc vào giá trị của i.

*grab popcorn* viết 19:11 ngày 30/09/2018

èo ;_;
lại nhìn ẩu.
sr thớt nh nhé

Tuấn Khanh viết 19:08 ngày 30/09/2018

Thanks mọi người mình hiểu rồi :3

Bài liên quan
0