Đang tải…
Đang tải…
Bản tổng quát của insertion sort theo 'bước nhảy': sắp các phần tử cách xa trước, thu nhỏ dần bước nhảy đến khi thành một lượt insertion sort thường.
Bước nhảy = 8.
1void shellSort(int[] arr) {2 int n = arr.length;3 for (int gap = n/2; gap > 0; gap /= 2) // thu nhỏ bước nhảy4 for (int i = gap; i < n; i++) { // chèn theo bước nhảy5 int key = arr[i], j = i; // phần tử cần đặt6 while (j >= gap && arr[j-gap] > key) { // dịch phần tử theo gap7 arr[j] = arr[j-gap]; j -= gap;8 }9 arr[j] = key; // đặt key vào chỗ10 }11}