Shell Sort

来源:互联网 发布:我的老婆是警花知君txt 编辑:程序博客网 时间:2024/06/03 14:40
public class ShellSort {public void shellSort(int[] data, boolean isDesc){for(int i = data.length/2; i > 0; i = i/2){for(int j = 0; j < i; j ++){insertSort(data, j, i, isDesc);}}}public void insertSort(int[] data, int begin, int gap, boolean isDesc){if(isDesc == false){for(int i = begin + gap; i < data.length; i = i + gap){if(data[i] >= data[i - gap]){continue;}int key = data[i];for(int j = i - gap; j >= 0; j = j -gap){if(data[j] > key){data[j + gap] = data[j];}else{data[j] = key; break;}}}}else{for(int i = begin + gap; i < data.length; i = i + gap){if(data[i] <= data[i - gap]){continue;}int key = data[i];for(int j = i - gap; j >= 0; j = j -gap){if(data[j] < key){data[j + gap] = data[j];}else{data[j] = key; break;}}}}}private void swap(int[] data, int m, int n){int temp = data[m];data[m] = data[n];data[n] = temp;}}