Công cụ bảo vệ mã nguồn .NET mạnh nhất, không thể unpack, miễn phí cho các khách hàng đầu tiên đăng ký.
Từ 1 tới 10 trên tổng số 10 kết quả

Đề tài: [C] Sắp xếp mãng tăng OR giảm

  1. #1
    No Avatar
    sonic33 Khách

    Mặc định [C] Sắp xếp mãng tăng OR giảm

    [FIXED]#include<iostream.h>
    #include<conio.h>
    void nhap(int a[],int &n);
    void interchangesort(int a[],int n);
    void main()
    {
    clrscr();
    int a[100],n;
    nhap(a,n);
    interchangesort(a,n);
    getch();
    }
    void nhap(int a[],int &n)
    {
    cout<<"Nhap n: ";
    cin>>n;
    for(int i=0;i<n;i++)
    {
    cout<<"Nhap a["<<i<<"]: ";
    cin>>a[i];
    }
    }
    void interchangesort(int a[],int n)
    {
    int i,j;
    for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
    if(a[i]>a[j])
    {
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
    cout<<"\n\n\nMang tang dan: "<<a[i];
    }

    [/FIXED]
    Mình đang làm 1 bài xắp xếp nhưng mình ko thể xuất ra mãng tăng đc các bạn xem cho mình bị thiếu xót chỗ.
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

  2. #2
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi sonic33 Xem bài viết
    [FIXED
    void interchangesort(int a[],int n)
    {
    int i,j;
    for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
    if(a[i]>a[j])
    {
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
    cout<<"\n\n\nMang tang dan: "<<a[i];
    }
    [/FIXED]
    Mình đang làm 1 bài xắp xếp nhưng mình ko thể xuất ra mãng tăng đc các bạn xem cho mình bị thiếu xót chỗ.
    Bạn nên sửa lại hàm này như sau:
    Code:
    void interchangesort(int a[],int n) 
    {
    	int i,j;
       for(i=0;i<n-1;i++)
       for(j=i+1;j<n;j++)
       if(a[i]>a[j])
       {
       	int  	temp=a[i];
          	   a[i]=a[j];
             	a[j]=temp;
       }
       for(int i=0;i<n;i++) //in mảng 
            printf("%d\t",a[i]);
    }
    Góp ý:Tên hàm của bạn là InterchangeSort, là tên của thuật toán đổi chỗ trực tiếp, nhưng bạn lại dùng phương pháp sắp xếp sủi bọt (bubble sort), do đó mình nghĩ bạn nên đổi lại thành void BubbleSort(...) cho có ý nghĩa hơn.

  3. #3
    No Avatar
    sonic33 Khách

    void bubblesort(int a[],int N)
    {
    int i,j;
    for(i=o;i<N;i++)
    for(j=N-1;j>i;j--)
    if(a[j]<a[j-1])
    Hoanvi(a[i],a[j-1])
    }
    Mình nghĩ phương pháp này mới đc gọi là bubblesort chứ.

  4. #4
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Thì trên ấy sonic viết là :
    void interchangesort(int a[],int n)
    {
    int i,j;
    for(i=0;i<n-1;i++)
    for(j=i+1;j<n;j++)
    if(a[i]>a[j])
    {
    int temp=a[i];
    a[i]=a[j];
    a[j]=temp;
    }
    cũng giống với :
    void bubblesort(int a[],int N)
    {
    int i,j;
    for(i=o;i<N;i++)
    for(j=N-1;j>i;j--)
    if(a[j]<a[j-1])
    Hoanvi(a[i],a[j-1])
    }
    Mình nghĩ phương pháp này mới đc gọi là bubblesort chứ.
    chỉ khác nhau trong vòng for thôi !Về thuật toán thì là kiểu buble đó .

  5. #5
    Ngày gia nhập
    12 2006
    Bài viết
    28

    Theo mình nghĩ ,để sắp xếp một mảng tăng hay giảm thì mình chỉ cần dùng hàm for để duyệt mảng thôi .
    code của bài này như sau :
    int a[100],i,j,min,n;
    //bạn tự nhập mảng ,và chọn số phần tử của mảng
    for(i=0;i<n,i++)
    for(j=i+1;j<n;j++)
    { if(a[i]>a[j])
    t=a[i];a[i]=a[j];a[j]=t;//đổi chổ cho hai phần tử
    }
    //sau đó bạn chỉ việc xuất mảng của mình ra thôi
    mình gợi ý cách này đúng theo C căn bản đấy nhé!
    bigdog

  6. #6
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Mặc định [C] Sắp xếp mãng tăng OR giảm

    Trích dẫn Nguyên bản được gửi bởi neverland87
    phương pháp sắp xếp sủi bọt
    Hix, phương pháp của người ta là nổi bọt, em lại sửa thành sủi bọt, nghe ghê quá.

  7. #7
    No Avatar
    Nhuan_Trang_Only_Love Khách

    Code:
    while(i!=n&&i>-1)
                               {
                                      if(A[i]<A[i+1]||A[i]==A[i+1])
                                          i++;
                                       else
                                          {
                                            dao(A[i],A[i+1]);
                                             i--;
                                          }
                                 }
    Bác huynguyen có thể xem đoạn code trên rồi nói qua cho em với.
    Cái này cũng được gọi là nổi bọt không?
    Và độ tối ưu so với hai vòng lặp for là ji?

  8. #8
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    code trên về í tưởng của U thì gần giống với bubble nhưng sai mất rồi ! Nghĩ lại coi

  9. #9
    Ngày gia nhập
    01 2007
    Bài viết
    412

    Trích dẫn Nguyên bản được gửi bởi Nhuan_Trang_Only_Love Xem bài viết
    Code:
    while(i!=n&&i>-1)
                               {
                                      if(A[i]<A[i+1]||A[i]==A[i+1])
                                          i++;
                                       else
                                          {
                                            dao(A[i],A[i+1]);
                                             i--;
                                          }
                                 }
    Bác huynguyen có thể xem đoạn code trên rồi nói qua cho em với.
    Cái này cũng được gọi là nổi bọt không?
    Và độ tối ưu so với hai vòng lặp for là ji?
    Bubble Sort có 2 vòng for, nếu cậu muốn chuyển sang dùng while thì cũng cần phải có 2 vòng while chứ, hình như với code trên của cậu, nó sẽ lặp vô hạn đó.

  10. #10
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Không phải vô hạn đâu , nhưng mà không đúng thôI!
    Công cụ bảo vệ mã nguồn .NET mạnh nhất hiện tại, miễn phí cho các khách hàng đầu tiên đăng ký.

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

  1. Bài tập C Thắc mắc về bài toán mảng tăng, giảm hay không tăng, không giảm
    Gửi bởi oracle95 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 10
    Bài viết cuối: 08-11-2013, 12:06 AM
  2. Thuật toán chuyển dãy tăng giảm thành dãy tăng?
    Gửi bởi anhtran trong diễn đàn Thắc mắc CTDL & Giải thuật
    Trả lời: 5
    Bài viết cuối: 12-03-2012, 07:40 AM
  3. Giải thuật về tăng/giảm độ tương phản của ảnh như thế nào?
    Gửi bởi cuipapknight 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: 27-08-2011, 11:11 PM
  4. MS SQL Lỗi sắp xếp tăng dần nếu trùng thì sắp giảm giần
    Gửi bởi teodainhan trong diễn đàn Thắc mắc Microsoft SQL Server & Microsoft Access
    Trả lời: 2
    Bài viết cuối: 05-07-2011, 08:35 AM
  5. Tăng và giảm bằng 2 phím | Thuật toán tăng và giảm khi đếm số thứ tự từ 00 đến 99?
    Gửi bởi guitar_flamenco trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 10
    Bài viết cuối: 09-05-2009, 05:59 PM

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