30/09/2018, 17:56
Tại sao phải học nhiều giải thuật sắp xếp?
Hiện tại trên lớp em phải học nhiều giải thuật sắp xếp rắc rối khó nhớ, suy cho cùng thì cũng dùng để sắp xếp sao không học 1 cái thôi cho khỏe (chắc là do em chưa hiểu hết tác dụng của nó). Khi đụng đến bài tập thì em cũng có thể tự viết cho mình 1 hàm sắp xếp tương tự. Liệu có nhất thiết phải nhớ các thuật toán đó không mấy tiền bối, hay là khi nào dùng thì mình tự viết hẳn 1 hàm.
Bài liên quan
Chỉ cần Quick Sort và Buble Sort là đủ rồi bạn nha,
Phần lớn các ngôn ngữ lập trình đều hỗ trợ hàm sort.
Trên lớp học nhiều cho vui thế thôi.
em học cái này chủ yếu để rèn luyện tư duy lập trình.
Sau này nếu em không đi theo chuyên ngành về khoa học máy tính thì thuật toán sắp xếp ít được sử dụng.
Học nhiều giải thuật để cải thiện tư duy về thuật toán.
Buble sortShaker sort cách tiếp cận cải tiến so vớiinsertion sortbuble sort. Đính chính theo lời @tntxtnt-> Nó thể hiện những bước cải tiến khi phát triển thuật toán. Ban đầu là một cách tiếp cận đơn giản, chạy được làm nền để so sánh, sau đó là cải tiến hoặc thay đổi hoàn toàn, áp dụng tư tưởng riêng trong lập trình hoặc đặc điểm riêng của bài toán, của máy tính.
Mục đính chính khi dạy các giải thuật so sánh là tư duy phát triển và đánh giá thuật toán.
Mình có cái link về các trường hợp cụ thể cho từng thuật toán sắp xếp nè
stackoverflow.com
When is each sorting algorithm used?
để tăng cường sự rèn luyện cho não, nghề lập trình đòi hỏi cái đầu của lập trình viên phải xử lý thông tin, tính toán và phản xạ nhanh.
nhớ lại năm kia học Tin học đại cương, thuật toán sắp xếp kiểu selection sort… hôm sau cô giáo hỏi mình quên mất, chả biết thế nào mà lại nghĩ ra cái thuật toán gần giống Bubble sort cô giáo cứ bảo sai mà ko tìm đc trường hợp nào sai cả hôm sau lên lớp cô mới bảo là thuật toán chạy đúng. hì hì
Học giải thuật rèn tư duy mà nên biết nên biết
“cải tiến” tức là tìm ra sau? hay là tốt hơn? Ko có tốt hơn nhá. Cải lùi so với insertion sort thì đúng hơn.
bubble sort là cực kì tệ, ko ai xài/dạy nữa. Insertion sort còn được xài chung với quick sort khi còn ít phần tử.
Coursera
.
.
.
.
phải biết insertion sort đầu tiên, rồi merge sort rồi quick sort. Với sort cần so sánh thì phải hiểu tại sao ko thể có hàm sort nhanh/tốt hơn O(nlogn). Với sort không cần so sánh thì biết thêm radix sort nữa là đủ rồi (thế quái nào mà sắp xếp ko cần so sánh?? )
.
.
.
.
Coursera có 2 lớp intro giải thuật của Princeton rất hay:
Coursera | Online Courses From Top Universities. Join for Free
1000+ courses from schools like Stanford and Yale - no application required. Build career skills in data science, computer science, business, and more.
Coursera | Online Courses From Top Universities. Join for Free
1000+ courses from schools like Stanford and Yale - no application required. Build career skills in data science, computer science, business, and more.
sách có web online miễn phí: http://algs4.cs.princeton.edu/home/
phần 2.1 Elementary sorts ko hề bàn tới bubble sort… sao trong này nhiều người lại thích
Uhm mình nhầm, đã đính chính ^^
Mọi người biết bubble sort vì trong sách Việt Nam vẫn dạy
Biết nó tồi nhưng có nó để mà học cách phân tích nó tồi chỗ nào, tại sao lại phải tìm kiếm cách khác hiệu quả hơn. Cái này mới là giá trị thật Bubble sort
Mọi người cố gắng theo 2 khóa Algorithm Coursera bạn này giới thiệu, năm nào cũng mở lớp.
Mình đã viết lại mấy thuật toán sắp sếp theo cách mình nghĩ là dễ hiểu. Bạn có thể đọc ở đây : http://chingovan.blogspot.com/search/label/algorithms