Trang 26 Nếu chỉ số j đó đã tìm đ−ợc, thì làm K=j-1 ; B[k]=A[i] ; A[i] = B[j] Còn nếu chỉ số j đó không có, thì đặt K=n ; B[k] = A[i] ; A[i]=0
Trong cả hai tr−ờng hợp, đoạn mới B[k:n] vẫn có các tính chất nói trên. Để đánh giá số phép toán của thuật toán, l−u ý rằng ở mỗi lần so sánh phần tử A[i] với phần tử B[j] hoặc phần tử A[i] đựoc chuyển sang B hoặc phần tử B[j] bị loại khỏi B. Nh− vậy mỗi phần tử của mảng A sinh ra một phép so sánh loại 1 ( khi nó chuyển sang B ) và không quá một phép so sánh loại 2 ( khi nó bị loại khỏi B0-. Nghĩa là có không qua 2n phép so sánh, còn các phép toán thứ tự không quá n0
88.2. Đa thức.
Để cho tiện ta đặt P0 = 1 và kí hiệu Pm(x) là tích m ngoặc đầu tiên Pm(x) = (x – x[1]*...*(x-x[m])
Xác định đa thức
Pm(x) = a(m,0) + a(m,1)*x + a(m,m-1)*xm-1 + xm Rõ ràng
Pm(x) =Pm-1(x) * (x – x[m])
Và các hệ số a(m,i) đ−ợc biểu thị qua các hệ số a(m-1,i) theo cách sau : a(m,m-1) = a(m-1,m-2) – x[m]
a(m,i) = a(m-1,i-1) – a(m-1,i)*x[m]
a(m,0) = -a(m-1,0)*x[m]
Nếu xếp hệ số a(m,i) vào phần tử A[i] của mảng A, thì việc chuyển từ các hệ số của đa thức Pm-1 sang các hệ số của đa thức Pm sẽ đ−ợc thực hiện theo các toán tử ( khi m>1):
A[m-1] = A[m-2] - x[m]
A[i] = A[i-1] = A[i] * x[m] với 1=m-2,...,1 A[0] = - A[0]*x[m]
Điều này cũng đ−ợc thực hiện trong ch−ơng trình 88.2. Nó chứa một chu trình “kép” vòng ngoài theo m từ 1 đến n và vòng trong treo i từ m-1 đến 0, với việc điều chỉnh đối với các giá trị ban đầu và các giá trị cuối cùng.
Cũng có thể trình bày ch−ơng trình theo cách khác : với chu trình ngoài theo i từ n - 1 đến 0 và chu trình trong theo m từ n -1 đến n.