Trong quá trình làm thì e thấy có 1 mẫu chương trình merge sort như thế này:
và nghĩ hoài vẫn không biết nó đã như thế nào mà cho kết quả đúng:
xin nhờ giải thích vì đoạn chương trình này e thấy dù sao nó vẫn dễ hiểu hơn các đoạn merge sort khác
và thắc mắc nữa là:
Em học chuỗi các pp sort này để làm gì?có phải để tăng kĩ năng lập trình hay là phương pháp giải thuật ,liệu các thuật như heap và radix, quick mà các e dc dạy là do ta dc dạy hay là nếu ko ai dạy thì đa phần là chả ai nghĩ ra ko?vì thực sự e thấy muốn nghĩ ra nó chắc phải thông minh lắm ạ?
Với e có câu hỏi làm thế nào post nhúng cái pastebin vào forum trường mình.e thử dùng mã nhúng của nó vào ko dc
và nghĩ hoài vẫn không biết nó đã như thế nào mà cho kết quả đúng:
Code:
#include "Header.h" void merge(int a[],int left,int mid,int right) { //cap nhat dong mang da sap xep,mang temp la de chua gia tri mang moi int *temp=new int [right-left+1]; //vi day la tong so pt 2 mang cong lai int dem=0; int i=left, j=mid+1; ///////////////////////////////buoc so sanh tu cap cap vs nhau//////////////////////////////kho hieu while (!(i>mid && j>right)) { if(i<=mid && j<=right && a[i] < a[j] || j>right) temp[dem++]=a[i++]; else temp[dem++]=a[j++]; } for (i=0;i<dem;i++) //nap tu mang tam vao mang that a[left+i]=temp[i]; delete []temp; } void merge_sort(int a[], int left, int right) { if(left<right) { int mid=(left+right)/2; //sap xep mang tu chi so trai:->mid :de qui merge_sort(a,left,mid); //sap xep tu mid->phai :recursion merge_sort(a,mid+1,right); //noi lai cho dung merge(a,left,mid,right); } } int main() { srand(time(0)); int a[100]; for (int i=0;i<100;i++) { a[i]=rand(); } merge_sort(a,0,99); //xuat for (int i=0;i<100;i++) cout<<a[i]<<" "; getch(); return 0; }
Code:
while (!(i>mid && j>right)) { if(i<=mid && j<=right && a[i] < a[j] || j>right) temp[dem++]=a[i++]; else temp[dem++]=a[j++]; }
và thắc mắc nữa là:
Em học chuỗi các pp sort này để làm gì?có phải để tăng kĩ năng lập trình hay là phương pháp giải thuật ,liệu các thuật như heap và radix, quick mà các e dc dạy là do ta dc dạy hay là nếu ko ai dạy thì đa phần là chả ai nghĩ ra ko?vì thực sự e thấy muốn nghĩ ra nó chắc phải thông minh lắm ạ?
Với e có câu hỏi làm thế nào post nhúng cái pastebin vào forum trường mình.e thử dùng mã nhúng của nó vào ko dc
Comment