-
18-02-2011, 03:46 PM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Về thuật toán sắp xếp trộn, không cài đặt đc, mọi người cho ý kiến đi. đc
Mã:#include<stdio.h>#include<conio.h>int A[100];void merge(int A[],int p,int q,int r){ int l[100],n[100],i,j,k; l[q-p+1]=10000; n[r-q+1]=10000; for(i=p;i<=q;i++) l[i-p]=A[i]; for(i=q;i<=r;i++) n[i-q]=A[i]; i=0;j=0; for(k=p;k<=r;k++) if(l[i]<n[j]) { A[k]=l[i]; i++; } else { A[k]=n[j]; j++; }}void merge_sort(int A[],int p,int r){int q;if(p<r){ q=(p+r)/2; merge_sort(A,p,q); merge_sort(A,q++,r); merge(A,p,q,r);}} main(){ int i,n; printf(" hay nhap vao so phan tu cua mang"); scanf("%d",&n); for(i=1;i<=n;i++) { printf(" A[%d]=",i); scanf("%d",&A[i]); } merge_sort(A,1,n); for(i=1;i<=n;i++) printf(" %d",A[i]); getch();}
View more random threads:
- Vấn đề nhỏ về thuật USCLN
- hàm strcpy trong C++
- sự khác nhau trong &a và a.!
- các bác giúp em với, em làm sai chỗ nào rồi
- Mọi người xem giúp đoạn code đếm số từ trong một xâu kí tự
- lỗi fprintf làm treo chương trình?
- Kiếm tiền bằng ngôn ngữ C
- cho hỏi về hàm gotoxy và textcolor
- [HELP] giúp mình chuyển đoạn code C++ này sang C với
- cach gán biến tạm trong c
-
18-02-2011, 04:44 PM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Theo em anh birthis nên dùng "lính canh" trong hàm Merge như bạn kia cho đỡ lằng nhằng, chỉ có if và else. cấp phát động trong hàm merge rất hay, e cũng làm như thế [IMG]images/smilies/biggrin.png[/IMG][IMG]images/smilies/biggrin.png[/IMG] có điều comment của em thì k được rõ ràng như a, phải học tập mới được [IMG]images/smilies/biggrin.png[/IMG][IMG]images/smilies/biggrin.png[/IMG]
-
18-02-2011, 05:37 PM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
@ chủ topic : bạn cho code vào thẻ đi ![IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG][IMG]images/smilies/17.gif[/IMG]
-
18-02-2011, 05:59 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Có lẽ bạn nên đọc 1 chút về kỹ thuật lập trình để viết code rõ ràng sáng sủa dễ đọc hơn. Bắt đầu từ cách đặt tên biến, cho đến chú thích.[IMG]images/smilies/smile.png[/IMG]
Bài trên của bạn khó đọc quá và không có chú thích nên rất khó hiểu. Đây là đoạn code của mình, có chú thích khá rõ, dùng để học tập về thuật toán sắp xếp trộn, bạn có thể xem qua:
Mã:/*Ten ham : Merge_SortMuc dich: Sap xep tang dan danh sach list tu start den end bang giai thuat sap xep tronDau vao : - Danh sach list - Diem bat dau cua day: start - Diem ket thuc day : endDau ra : - Danh sach list tu start den end da duoc sap xep*/void Merge_Sort(float* list,int start,int end){ if( start < end){ int mid = (start+end)/2; Merge_Sort(list,start,mid); Merge_Sort(list,mid+1,end); Merge(list,start,mid,end); }}/*Ten ham : MergeMuc dich: Tron 2 day con da duoc sap xep tang dan, thanh 1 day duoc sap xep tang dan gom tat ca cac phan tu cua ca 2 day con.Dau vao : - Danh sach list - Diem bat dau cua day 1: start - Diem ket thuc day 1:mid - Diem bat dau day 2: mid + 1 - Diem ket thuc day 2 : endDau ra : - Danh sach list tu start den end da duoc sap xep tang dan*/void Merge(float* list,int start,int mid,int end){ float* tmp = new float[end-start+1]; int j=start;//Con chay tren day 1 int k=mid+1;//Con chay tren day 2 for( int i=end-start;i>=0;--i){ /* Chi co 3 truong hop: - Day 1 het, day 2 con - Day 2 het, day 1 con - Ca 2 day con Khong co truong hop ca 2 day cung het vi neu 2 day cung het thi vong lap se ket thuc. Do do 2 truong hop phia duoi khong can kiem tra k <= end hay j <= mid */ if(j == mid +1){ //Truong hop day 1 da het, //copy phan con lai cua day 2 vao ket qua tmp[end-start-i] = list[k]; ++k; } else if(k == end +1){ //Truong hop day 2 da het, //copy phan con lai cua day 1 vao ket qua tmp[end-start-i] = list[j]; ++j; } else if( list[j] < list[k] ){ //Dua phan tu vi tri j cua day 1 vao day ket qua tmp[end-start-i] = list[j]; ++j; } else{ //Dua phan tu vi tri k cua day 2 vao day ket qua tmp[end-start-i] = list[k]; ++k; } } //Copy ket qua tro lai danh sach list for( int i=0;i<=end-start;++i){ list[start+i] = tmp[i]; } delete[] tmp;}
-
01-04-2011, 05:34 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
vòng for 2 cũng sai từ q+1 mới đúng
-
20-09-2011, 11:30 AM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Thực sự thì đọc mãi mình vẫn không thể hiểu được cách thức hoạt động của cái thuật toán này
Không chỉ dừng lại ở việc sử dụng nguyên liệu cao cấp, mỗi công trình còn được "chăm sóc" bằng 4 dịch vụ xuất sắc của Tre Nghệ. Từ việc tư vấn, thiết kế đến thi công và hoàn thiện, mọi quy trình đều...
Chất Lượng và Sáng Tạo: Kiến Trúc...