1. 程式人生 > 其它 >希爾排序--O(N^2) --- 不穩定

希爾排序--O(N^2) --- 不穩定

技術標籤:java資料結構演算法排序演算法java資料結構插入排序

希爾排序是插入排序的一種,它是針對直接插入排序演算法改進而來的。

基本思想

  1. 把記錄按步長gap分組,對每組記錄採用直接插入排序方法進行排序;
  2. 隨著步長逐漸減小,所分成的組包含的記錄越來越多;
    當步長值減小到1時,整個資料合成一組,構成一組有序記錄,完成排序;

動態圖

在這裡插入圖片描述

程式碼

public class ShellSort {
	public static void main(String[] args) {
		int[] array = {3,5,1,2,4,6,8,10,9};
		sort(array);
	}
	
	public
static void sort(int[] array){ //1.定義一個用於進行交換的中間變數 int temp = 0; //2.定義一個用於記錄是希爾排序的第幾輪排序 int count = 0; //3.開始進行希爾排序 ,初始步長為陣列長度的一半,每一次步長減半 for(int gap = array.length / 2;gap > 0;gap /= 2) { // for(int i = gap;i < array.length;i++) { //遍歷各組中的所有元素(共 gap組),步長gap for(int j = i - gap;j >=
0; j-=gap) { //如果當前元素大於 加上步長之後的那個元素,則進行交換 if(array[j] > array[j+gap]) { temp = array[j]; array[j] = array[j+gap]; array[j+gap] = temp; } } } System.out.println("希爾排序的第"+(++count)+"輪排序的結果是:"+Arrays.toString(array)); } } }