摘要: C函數atoi的實現 閱讀全文
算法與數據結構
摘要: N的階乘,通過數組的方式計算N的階乘,防止由于計算結果太大導致溢出。非遞歸方式。 閱讀全文
摘要: 大根堆排序的基本思想
① 先將初始文件R[1..n]建成一個大根堆,此堆為初始的無序區
② 再將關鍵字最大的記錄R[1](即堆頂)和無序區的最后一個記錄R[n]交換,
由此得到新的無序區R[1..n-1]和有序區R[n],且滿足R[1..n-1].keys≤R[n].key
③ 由于交換后新的根R[1]可能違反堆性質,故應將當前無序區R[1..n-1]調整為堆。
然后再次將R[1..n-1]中關鍵字最大的記錄R[1]和該區間的最后一個記錄R[n-1]交換,
由此得到新的無序區R[1..n-2]和有序區R[n-1..n],且仍滿足關系R[1..n- 2].keys≤R[n-1..n].keys,
同樣要將R[1..n-2]調整為堆。 閱讀全文
① 先將初始文件R[1..n]建成一個大根堆,此堆為初始的無序區
② 再將關鍵字最大的記錄R[1](即堆頂)和無序區的最后一個記錄R[n]交換,
由此得到新的無序區R[1..n-1]和有序區R[n],且滿足R[1..n-1].keys≤R[n].key
③ 由于交換后新的根R[1]可能違反堆性質,故應將當前無序區R[1..n-1]調整為堆。
然后再次將R[1..n-1]中關鍵字最大的記錄R[1]和該區間的最后一個記錄R[n-1]交換,
由此得到新的無序區R[1..n-2]和有序區R[n-1..n],且仍滿足關系R[1..n- 2].keys≤R[n-1..n].keys,
同樣要將R[1..n-2]調整為堆。 閱讀全文
摘要: 幾種內部排序算法總結!(冒泡排序、快速排序、直接插入排序、拆半插入排序、簡單選擇排序)
/*
冒泡排序
算法:
核心思想是掃描數據清單,尋找出現亂序的兩個相鄰的項目。當找到這兩個項目后
交換項目的位置然后繼續掃描。重復上面的操作直到所有的項目都按順序排好
時間復雜度n*n (n-1)*n/2
*/ 閱讀全文
/*
冒泡排序
算法:
核心思想是掃描數據清單,尋找出現亂序的兩個相鄰的項目。當找到這兩個項目后
交換項目的位置然后繼續掃描。重復上面的操作直到所有的項目都按順序排好
時間復雜度n*n (n-1)*n/2
*/ 閱讀全文