Shell Sort

xiaoxiao2021-02-27  223

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; } }
转载请注明原文地址: https://www.6miu.com/read-11796.html

最新回复(0)