# 希尔排序 Shellsort

## Shell sort希尔排序

@See <https://en.wikipedia.org/wiki/Shellsort> @See <https://github.com/jiek2529/java_algorithm> - ShellSort

![](https://2531019738-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-M6gnm_fO-nBQv_cernA%2Fsync%2F08820ad7f25efb05595c4980c6f17d21b73022a9.gif?generation=1588815966636252\&alt=media)

### principle原理

希尔排序是按照不同步长对元素进行插入排序.

## example示例

```java
public void sort(int[] list) {
        //希尔排序
        int d = list.length;
        while (true) {
            d = d / 2;
            for (int x = 0; x < d; x++) {
                for (int i = x + d; i < list.length; i = i + d) {
                    int temp = list[i];
                    int j;
                    for (j = i - d; j >= 0 && list[j] > temp; j = j - d) {
                        list[j + d] = list[j];
                    }
//                    if (i == j + d) break;
                    list[j + d] = temp;
//                    log("swap(" + i + "," + (j + d) + ")");
                }
            }
            if (d == 1) {
                break;
            }
        }
    }
```
