InterchangeSort

        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[j ]< a[i])            // Thỏa 1 cặp nghịch thế                                                                          Swap(a[i], a[j]);

}

Bước 1: i = 0;   // bắt đầu từ đầu dãy

Bước 2: j = i+1; //tìm các nghịch thế với a[i]

Bước 3:

                                                Trong khi j < N thực hiện

                                                                Nếu a[j]<a[i] //xét cặp a[i], a[j]

                                                                                Swap(a[i],a[j]);

                                                j = j+1;                    

Bước 4: i = i+1;

                                                Nếu  i < N-1: Lặp lại Bước 2.

                                                Ngược lại:  Dừng.

       Ðối với giải thuật đổi chỗ trực tiếp, số lượng các phép so sánh xảy ra không phụ thuộc vào tình trạng của dãy số ban đầu, nhưng số lượng phép hoán vị thực hiện tùy thuộc vào kết qủa so sánh, có thể ước lược trong từng trường hợp như sau :

Độ pt của tt

Trường hợp                 Irl                                                                        Số lần hoán vị

Tốt nhất  tongxichma i=1(n-u+1)=n(n-1)/2                             0

Xấu nhất  n(n-1)/2                                                   tong xm i=1 ->n-1 (n-i+1)=n(n-1)/2

Bạn đang đọc truyện trên: AzTruyen.Top

Tags: