Tải bản đầy đủ (.pdf) (7 trang)

BT Công nghệ thông tin trường ITC 3

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (168.35 KB, 7 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1>

71


© Dương Thành Phết-www.thayphet.net


<b> Minh Họa</b>


Cho dãy có 8 phần tử Sắp xếp theo vi trí tăng dần


<b>1</b> <b>2</b> <b>3</b> <b>5</b> <b>7</b> <b>9</b> <b>10</b> <b>15</b>


<b>ðoạn cần </b>
<b>sắp xếp</b>


<b>i=1; j=3</b>


<b>L</b> <b>X=2</b> <b>R</b>


i

j



<b>L=1</b>
<b>R=3</b>


Khoa CNTT Trường Cð CNTT TP.HCM


</div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

72


© Dương Thành Phết-www.thayphet.net


<b> Minh Họa</b>


Cho dãy có 8 phần tử Sắp xếp theo vi trí tăng dần



<b>1</b> <b>2</b> <b>3</b> <b>5</b> <b>7</b> <b>9</b> <b>10</b> <b>15</b>


<b>ðoạn cần </b>
<b>sắp xếp</b>


<b>Không cịn đoạn </b>
<b>nào cần sắp xếp</b>


Khoa CNTT Trường Cð CNTT TP.HCM


</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

73


© Dương Thành Phết-www.thayphet.net Khoa CNTT Trường Cð CNTT TP.HCM


<b>10</b> <b>5</b> <b>7</b> <b>3</b> <b>9</b> <b>2</b> <b>15</b> <b>1</b>


<b>7</b> <b>9</b> <b>5</b> <b>15</b> <b>10</b>


<b>9</b> <b>7</b> <b>15</b> <b>10</b>


<b>9</b> <b>10</b> <b>15</b>


<b>9</b> <b>10</b>


<b>5</b> <b>7</b>


<b>1</b> <b>2</b> <b>3</b>


<b>ðoạn [1- 8]</b>



<b>ðoạn [4- 8]</b>


<b>ðoạn [5- 8]</b>


<b>ðoạn [6- 8]</b>


<b>ðoạn [6- 7]</b>


<b>ðoạn [4- 5]</b>


<b>ðoạn [1- 3]</b>


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

74


© Dương Thành Phết-www.thayphet.net


<b> Giải thuật:</b>


<b>Bước 1:</b>


<b>i=1;</b>


<b>Bước 2:</b>


j=N;


Trong khi (j>i) thực hiện:


Nếu a[j]<a[j-1]: Hoán vị a[j] và a[j-1]


j—;


<b>Bước 3:</b>


i=i+1;


Nếu i>N-1: Hết dãy, dừng
Ngược lại: Lặp lại Bước 2


Khoa CNTT Trường Cð CNTT TP.HCM


</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

75


© Dương Thành Phết-www.thayphet.net


<b>Cài ðặt</b> <b>void QuickSort(int M[], int First, int Last)</b>{
int i, j, tam, x;


x = M[(First+Last)/2]; i = First; j = Last;
do {


while (M[i] <x) i++;
while (M[j] > X) j--;
if (i <= j)


{


tam=M[i];
M[i]=M[j];
M[j]=tam;


i++; j--;
}


}while (i<= i);


QuickSort(M, First, j);
QuickSort (M, i, Last);
}


Khoa CNTT Trường Cð CNTT TP.HCM


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

76


© Dương Thành Phết-www.thayphet.net


<b> đánh giá giải thuật:</b>


+ Trường hợp tốt nhất, khi mảng M có thứ tự tăng:
Số phép gán: Gmin = N-1


Số phép so sánh: Smin = N×Log2(N)/2
Số phép hốn vị: Hmin = 0


+ Trường hợp xấu nhất, khi phần tử X ñược chọn
ở giữa dãy con là giá trị lớn nhất:


Số phép gán: Gmax = N×(N-1)/2


Số phép so sánh: Smax = (N-1)×(N-1)
Số phép hốn vị: Hmax = N×(N-1)/2


+ Trung bình:


Số phép gán: Gavg = (N-1)×(N+2)/4


Số phép so sánh: Savg = N×[Log2(N)+2N–2]/4
Số phép hốn vị: Havg = N×(N-1)/4


Khoa CNTT Trường Cð CNTT TP.HCM


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

77


© Dương Thành Phết-www.thayphet.net


Chi phí trung bình O(n*log2n)


Chi phí cho trường hợp xấu nhất O(n2<sub>)</sub>


Chi phí này phụ thuộc vào cách chọn phần tử trục:
- Nếu chọn được phần tử có giá trị trung bình ta
sẽ chia thành 2 dãy bằng nhau


- Nếu chọn nhằm phần tử nhỏ nhất (hay lớn
nhất) <sub> O(n</sub>2<sub>)</sub>


Khoa CNTT Trường Cð CNTT TP.HCM


</div>

<!--links-->

×