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

Đề tài: Sắp xếp chèn, rất mong mọi người giúp đỡ

  1. #1
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mặc định Sắp xếp chèn, rất mong mọi người giúp đỡ

    Sắp xếp chèn mình ko hiểu mong mọi người giải thích giùm
    C Code:
    1.  int index,i,j;
    2.   for (i=1; i < array_size; i++)
    3.   {
    4.     index = numbers[i];
    5.    
    6.     for(j=i ; j > 0 && (numbers[j-1] > index) ; j=j-1)
    7.     {
    8.       numbers[j] = numbers[j-1];
    9.     }
    10.     numbers[j] = index;

    Cảm ơn mọi người

  2. #2
    Ngày gia nhập
    09 2006
    Nơi ở
    /usr/share/.hack@
    Bài viết
    1,433

    Ví dụ : cho mảng : 4 2 7 ..sắp xếp bé tới lớn
    Code:
    Cho i = 1 ; number[1] = 2 = index ;
             Cho j = i
                   Chọn j = 1 ; nếu number[0] = 4 > 2 = index và j - 1 = 1 - 1 = 0
                            Thì đổi chỗ index và number [0];
                            =>>> number[0] = 2 
                   Quay về : trả lại cho number[1] giá trị 4 => number[1] = 4;
    => có dãy : 2 4 7
    Cứ thế tiép tục sắp .
    None!

  3. #3
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Cảm ơn anh Peter 87 nhiều

    Nhưng anh có thể nói rõ hơn được ko ?

    Thank
    Đã được chỉnh sửa lần cuối bởi manutd1988 : 18-04-2007 lúc 10:29 PM.

  4. #4
    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 manutd1988 Xem bài viết
    Cảm ơn anh Peter 87 nhiều

    Nhưng anh có thể nói rõ hơn được ko ?

    Thank
    Đoạn code trên dùng để sắp xếp 1 mảng số dựa theo giải thuật Insertion Sort nè. Neverland nhớ hồi trước bạn đã từng hỏi về giải thuật này rồi mà.
    Muốn hiểu đoạn code trên ra sao, bạn hãy tự viết ra giấy 1 dãy số bất kỳ, sau đó chạy bằng tay (nhẩm trong đầu) đoạn code trên, lúc đó bạn sẽ hiểu ngay!
    Lời giải thích của pete cũng dễ hiểu mà.

  5. #5
    Ngày gia nhập
    04 2007
    Nơi ở
    hà nội
    Bài viết
    9

    Theo mình thì thuật toán trên có thể viết như sau:

    PHP Code:
    int index,i,j;
    for(
    i=0;i<array_size;i++)
        for(
    j=i+1;j<array_size;j++)
              if(
    number[i]<number[j]) 
                   { 
    index=number[i];number[i]=number[j];number[j]=index;} 
    Có thể giải thích thuật toán như sau:
    Code:
    VD luôn mảng 4 2 7...
    Xét vòng lặp đầu tiên thì number[i]=number[0]=4,number[j=i+1]=number[1]=2,
    ta thấy number[i]<number[j] nên đổi chỗ 2 phần tử này.
    Dùng biến index giống biến trung gian (để nhận giá trị tạm thời ) 
    để đổi chỗ number[i] và number[j].Ta có đoạn code 
    { index=number[i];number[i]=number[j];number[j]=index;}
    Sau lần đổi chỗ nầy thì number[0]nhận giá trị nhỏ nhất trong 2 phần tử đầu.
    Tiếp tục thực hiện vòng lặp để so sánh number[0] (hiện tại ) 
    với các phần tử khác (j=i+1) đến hết mảng.
    Sau j<array_size lần thực hiện thì number[0] sẽ là phần tử bé nhất trong mảng.
    Đến vòng lặp lớn tiếp theo thì xét đến number[1] và tìm ra 
    phần tử bé thứ 2 trong mảng.cứ như vậy cho đến hết.
    Thuật toán này đơn giản nên mình hi vọng là bạn đã hiểu.
    Đã được chỉnh sửa lần cuối bởi hikaru007 : 18-04-2007 lúc 11:35 PM.
    >> Yêu nhau cởi áo cho nhau, Ghét nhau trợn mắt : "Áo đâu ? Mặc vào !!! <<

  6. #6
    Ngày gia nhập
    03 2007
    Nơi ở
    Nhà hát của những giấc mơ
    Bài viết
    33

    Mặc định Sắp xếp chèn, rất mong mọi người giúp đỡ

    Cảm ơn các bạn nhiều nhé , các bạn rất nhiệt tình giúp đỡ , Thank

  7. #7
    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 hikaru007 Xem bài viết
    Theo mình thì thuật toán trên có thể viết như sau:

    PHP Code:
    int index,i,j;
    for(
    i=0;i<array_size;i++)
        for(
    j=i+1;j<array_size;j++)
              if(
    number[i]<number[j]) 
                   { 
    index=number[i];number[i]=number[j];number[j]=index;} 
    Đoạn code trên của bạn dùng để sắp xếp mảng theo giải thuật Bubble Sort, trong khi đoạn code mà bạn manutd1988 đã post lúc đầu dùng để sắp xếp mảng theo giải thuật Insertion Sort. Do đó nó không hề tương đồng.
    Và đây là đoạn code tương đồng:
    PHP Code:
    void InsertionSort(int a[], int N )
    {    
    int posi;
         
    int x
         for(
    int i=i<i++) 
         {
               
    a[i]; 
               
    pos i-1;
               while((
    pos >= 0)&&(a[pos] > x))
               {
                     
    a[pos+1] = a[pos];
                     
    pos--;
               }
               
    a[pos+1] = x]; 
         }


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

    Đúng rồi cái trên của hikaru là buble sort , còn bạn MU thì đang hỏi về insert sort ý tưởng của nó giống như MU chơi bài tiến lên vậy , bắt từng cây lên và sắp xếp nó theo 1 trật tự nào đó , cây tiếp theo sẽ phải kiểm tra nó cần ở vị trí nào để thỏa trật tự đó sau đó chèn vào . MU hiểu chưa ?

  9. #9
    Ngày gia nhập
    04 2007
    Nơi ở
    hà nội
    Bài viết
    9

    Cám ơn các bạn KidKid Và Neverland87 vì các bạn giúp mình hiểu hơn về thuật toán của bài này.Trước giờ mình vẫn nhầm lẫn nó là một.Nhưng mà các bạn có thể nói rõ về chức năng của nó không?
    Vì mỗi thuật toán có ưu điểm riêng nên mình cần biết sử dụng thuật toán khi nào thì hợp lí nhất và ưu việt nhất.Thank!
    >> Yêu nhau cởi áo cho nhau, Ghét nhau trợn mắt : "Áo đâu ? Mặc vào !!! <<

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

  1. Học C++ bắt đầu từ đâu, mong các anh giúp đỡ.......
    Gửi bởi student123 trong diễn đàn Đào tạo CNTT
    Trả lời: 10
    Bài viết cuối: 06-02-2017, 11:35 PM
  2. Mong được các anh/chị giúp đỡ!
    Gửi bởi louis.txt trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 15-08-2013, 11:51 AM
  3. mong các bạn rãnh giúp mình với !
    Gửi bởi duongthanhhung trong diễn đàn Nhập môn lập trình Java
    Trả lời: 0
    Bài viết cuối: 06-08-2013, 10:18 AM
  4. Em có vài câu hỏi về cây nhị phân. Mong các bác chỉ giúp!?
    Gửi bởi Hiep_si_Dui trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 8
    Bài viết cuối: 28-06-2009, 05:24 PM
  5. Bài toán Lớp đa giác.Mong mọi người giúp đỡ
    Gửi bởi congtuazx trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 27-04-2009, 09:13 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