// headsort2 是我自己想的,感覺這麼寫可以。。。驗證是ok的。
// 區別等我問問。。。
import com.alibaba.fastjson.json;
/** * @author : wangtb
* @date : 2019-09-29 23:02
*/public class heapsort ;
heapsort(arr);
heapsort2(arr);
}/**
* 貌似也行啊 是因為時間複雜度不好嗎?
* @param arr
*/private static void heapsort2(int arr)
swap(arr, 0, size);
size--;}}
public static void heapsort(int arr)
//先轉成乙個大根堆
for (int i = 0; i < arr.length; i++)
system.out.println(json.tojsonstring(arr));
//int heapsize = arr.length;
swap(arr, 0, --heapsize);
system.out.println(json.tojsonstring(arr));
while (heapsize > 0)
}//初次形成大根堆
public static void headinsert(int arr, int index)
}public static void heapify(int arr, int index, int heapsize)
swap(arr, largest, index);
// system.out.println("heapify start, heapsize = " + heapsize);
// system.out.println(json.tojsonstring(arr));
// system.out.println("heapify end");
index = largest;
left = index * 2 + 1;}}
public static void swap(int arr, int a, int b)
}
再談基礎排序演算法 堆排序
前段時間寫了這篇文章幾個常見排序演算法的實現,僅僅是對自己所學知識的一點總結。這不寒假這段時間又在看 演算法 一書,前兩章也是在講基礎排序演算法,感覺書中的思路比我自己總結的好太多,於是就抽出時間來再寫一寫新的理解和體會。也算是對前面那篇文章的一點補充吧。說到堆排序,我們應該不陌生,以前在資料結構課...
C 演算法基礎之排序 堆排序
今天,大白跟大家玩玩堆排序。基本思想 堆排序是利用堆 大根堆或者小根堆 的特點進行排序。啪啦啪啦一大堆。以建最小堆為例 簡言之,就是將無序區看成乙個完全二叉樹,利用完全二叉樹用陣列儲存是的特點,進行排序。建堆 從序列的末尾開始,先找出孩子中的較小值,然後和雙親比較,如果小於雙親,則交換位置。排序 進...
基礎排序演算法 堆 和堆排序
堆是一種靈巧,部分有序的資料結構,它適合用來實現優先佇列。優先佇列是元素的乙個集合,其中每個元素都包含乙個被稱作元素優先順序的可排序屬性,優先佇列支援下面的操作 找出乙個具有最高優先順序的元素 一般是最大或者最小 刪除乙個具有最高優先順序的元素 新增乙個元素到集合中去 定義 堆可以定義為一根二叉樹,...