Từ 1 tới 2 trên tổng số 2 kết quả

Đề tài: Code thuật toán Heap Sort mọi người cho ý kiến

  1. #1
    Ngày gia nhập
    01 2011
    Nơi ở
    Đà Nẵng
    Bài viết
    2

    Post Code thuật toán Heap Sort mọi người cho ý kiến

    code Heap Sort ae vao xem nha

    C++ Code:
    1. #include <iostream.h>
    2. #include <conio.h>
    3. #define max 100
    4. void NhapMang(int A[],int n)
    5.  {
    6.    for(int i=0; i<n; i++)
    7.  {
    8.       cout<<"nhap Phan tu thu A["<<i<<"] =";
    9.       cin>>A[i];
    10.   }
    11. }
    12. void XuatMang(int A[],int n)
    13.  {   cout<<endl;
    14.    for(int i=0; i<n; i++)
    15.       cout<<A[i]<<"\t";
    16. }
    17. void Swap(int &a,int &b)
    18.  {   int temp = a;
    19.    a = b;
    20.    b = temp;
    21. }
    22. //hoan vi nut cha thu i phai lon hon nut con
    23. void Heapify(int A[],int n, int i)
    24.  {   int Left = 2*(i+1)-1;
    25.    int Right = 2*(i+1);
    26.    int Largest;
    27.    if(Left<n && A[Left]>A[i])
    28.       Largest = Left;
    29.    else
    30.       Largest = i;
    31.    if(Right<n && A[Right]>A[Largest])
    32.       Largest = Right;
    33.    if(i!=Largest)
    34.  {
    35.       Swap(A[i],A[Largest]);
    36.       Heapify(A,n,Largest);
    37.    }
    38. }
    39. //xay dung Heap sao cho moi nut cha luon lon hon nut con tren cay
    40. void BuildHeap(int A[], int n)
    41.  {
    42.    for(int i = n/2-1; i>=0; i--)
    43.       Heapify(A,n,i);
    44. }
    45. void HeapSort(int A[], int n)
    46.  {
    47.    BuildHeap(A,n);
    48.    for(int i = n-1; i>0; i--)
    49. {
    50.       Swap(A[0],A[i]);
    51.       Heapify(A,i,0);
    52.    }
    53. }
    54. main()
    55.  {
    56.       int A[max], n;
    57.    cout<<"Nhap so phan tu:";
    58.    cin>>n;
    59.    NhapMang(A,n);
    60.    cout<<"\nMang vua nhap la:";
    61.    XuatMang(A,n);
    62.    cout<<"\nSap xep theo Heap Sort:";
    63.    HeapSort(A,n);
    64.    XuatMang(A,n);
    65.    getch();
    66. }
    Đã được chỉnh sửa lần cuối bởi luanv0pr0 : 24-11-2011 lúc 09:30 PM.

  2. #2
    Ngày gia nhập
    06 2013
    Bài viết
    1

    Cho mình hỏi tại sao lại phải gọi đệ quy Heapify(A,n,Largest); làm gì nưa
    void Heapify(int A[],int n, int i)
    { int Left = 2*(i+1)-1;
    int Right = 2*(i+1);
    int Largest;
    if(Left<n && A[Left]>A[i])
    Largest = Left;
    else
    Largest = i;
    if(Right<n && A[Right]>A[Largest])
    Largest = Right;
    if(i!=Largest)
    {
    Swap(A[i],A[Largest]);
    Heapify(A,n,Largest);
    }
    }

Các đề tài tương tự

  1. Thuật toán C++ Ưu nhược điểm các kiểu sort Interchange sort, Selection sort, Insertion sort, Sharke sort , Quick sort, Heap sort
    Gửi bởi duythanhnguyen trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 7
    Bài viết cuối: 23-09-2013, 01:16 AM
  2. Bài tập C++ Help hlep (Heap Sort) với 2 mảng 1 chiều
    Gửi bởi ThanhVien642013 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 04-06-2013, 10:08 PM
  3. code Thuật toán Quick Sort. Giúp em sửa lỗi?
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 20-10-2009, 09:25 PM
  4. sắp xếp cây-Heap sort trên C?
    Gửi bởi sieutanbinh1711 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 15-05-2009, 08:24 PM
  5. Các thuật toán sắp xếp mảng | Bubble sort, Shak sort, Insertion sort, Selection, ...
    Gửi bởi kids trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 11-04-2009, 10:05 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn