01/10/2018, 10:24
Hỏi về Quick Sort
Cho minh hỏi phương pháp quick sort, nếu sắp xếp sính viên tăng dần theo điểm trung bình thì cái left right nên khai bao ở đâu, trong hàm main hay trong struct sinh viên, mấy cai Sort khác mình làm được, còn riêng cái Quick Sort có thêm 2 cái left right nên hơn phức tạp, mọi người gợi ý giúp mình được không.
Bài liên quan
QuickSort(x[], left, right)
chỗ kia phải là
QuickSort(x, i, right)
.khi post code tui nhầm lỗi i thành left, cái x.sophantu khi khai bao trong hàm main thì ko báo lỗi biễn cục bộ, mà khi khai báo trong hàm nhập thì nó bào lỗi, ko có left right thì bỏ đâu cũng được
Thế là thế nào?
20 char…
vậy này, tui không dùng Quick sort thì nhập danh sách và xuất danh sách bình thường, khai báo số lượng phần tử x.sophantu bỏ trong hàm main() hay trong hàm nhập đều được, còn khi viết hàm Quick sort thì tui phải khải khai báo thêm2 biên left và right.Khi đó khai báo x.sophantu bỏ trong hàm nhập thì nó báo lỗi biến cục bộ gì đó còn khi bỏ vào hàm main thi nó ko báo lỗi và chạy bình thường và sắp xếp đúng.
Thực ra bạn chưa cho nhập gì mà đã gán số phần tử cho 1 biến khác nên báo lỗi là phải.
@Vinh_Nguyen4:
Phải công nhận là chủ thớt đang trong tình trạng “ăn không nên đọi, nói không nên lời”, cả code lẫn lời giải thích của chủ thớt đều tối nghĩa như nhau :v Mỗi lần nhìn thấy code + lời giải thích của thớt mình đều cảm thấy thảm hại…
Theo cmt của @rogp10 thì thớt chưa hề nhập giá trị của x.sophantu, tức là số phần tử đầu vào chưa xác định. Đáng ra phải đưa
nhapDS(x)
trước khi gán left, right. Mà biến left, right trong main chả để làm cái gi cả, truyền thẳngQuickSort(x, 0, x.sophantu-1)
cũng chả chết ai, vìvoid QuickSort
kia chỉ truyền vào tham biến x, còn left, right là tham trị.Mình thấy video này khá hay bạn có thể tham khảo