Java学习资料-Java常用算法-希尔排序算法

/**
 * 希尔排序
 * 
 * @param  array
 */
public void XiErSort(int[] array) {
// 循环增量(就是每个子数组的个数,当子数组个数为1时,排序就完成)
for (int increment = array.length / 2; increment > 0; increment = increment / 2) {
// 对increment个子数组进行排序
for (int i = 0; i < increment; i++) {
// 对子数组进行直接插入排序
for (int j = i; j < array.length; j = j + increment) {
// 拿到索引为j的值,依次前面的所有的值比较
for (int k = j; k > 0; k = k - increment) {
// 当后面的值小于前面的值的时候,2个数交换
if (array[k] < array[k - 1]) {
// 交换2个数的位置
int temp = array[k];
array[k] = array[k - 1];
array[k - 1] = temp;
}
}
}
}
}
}

你可能感兴趣的:(Java学习资料-Java常用算法-希尔排序算法)