shellsort
void shellsort(int b[100])
{
int i, j, increment,temp;
increment = 3;
while(increment > 0)
{
for(i=0; i<n;i++)
{
j = i;
temp=b[i];
while((j >= increment)&&(b[j-increment] > temp))
{
b[j] = b[j - increment];
j = j- increment;
}
b[j] = temp;
}
if(increment/2 != 0)
increment = increment/2;
else if(increment == 1)
increment = 0;
else
increment = 1;
}
}
Các bước tiến hành như sau:
Bước 1: Chọn k khoảng cách h[1], h[2], ..., h[k]; i = 1;
Bước 2: Phân chia dãy ban đầu thành các dãy con cách nhau h[i] khoảng cách. Sắp xếp từng dãy con bằng phương pháp chèn trực tiếp;
Bước 3: i = i+1;
Nếu i > k : Dừng
Ngược lại : Lặp lại Bước 2.
Bạn đang đọc truyện trên: AzTruyen.Top