當進行資料處理時,經常需要進行查詢操作
為了查得快找得準,通常要求待處理的資料按關鍵字大小有序排列,便於採用查詢效率最高的查詢法
當今計算機上排序占用計算機cpu高達30%~50%,排序是計算機程式設計中一種基礎性操作
研究和掌握各種排序方法很重要
插入排序的基本思想:
在乙個已經排好序的記錄子集的基礎上,每一步將下乙個待排序的記錄有序插入到已經排好序的記錄子集中
直到將所有的待排序記錄全部插入為止
打撲克牌的抓牌就是插入排序的乙個例子,每一張牌插入到合適的位置,就可以得到乙個有序序列
基於交換的排序法是一類通過交換逆序元素進行排序的方法
選擇排序的基本思想:
在每一趟n-i+1個記錄中選取關鍵字最小的記錄作為有序序列中第i個記錄
之前的三類排序方法都是將一組記錄按照關鍵字大小排成乙個有序序列
歸併排序的思想是基於合併,將兩個或者兩個以上有序表合併成乙個新的有序表
依次兩兩歸併
時間複雜度:o(nlog2n)
空間複雜度:o(n)
內部排序 堆排序
堆實際上是一棵完全二叉樹,其任何一非葉節點滿足性質 key i key 2i 1 key i key 2i 2 或者key i key 2i 1 key key 2i 2 即任何一非葉節點的關鍵字不大於或者不小於其左右孩子節點的關鍵字。堆分為大頂堆和小頂堆,滿足key i key 2i 1 key ...
內部排序 氣泡排序
內部排序 氣泡排序。n個記錄進行氣泡排序的基本方法是 首先將第乙個記錄的關鍵字和第二個記錄的關鍵字進行比較,若為逆序,則交換這2個記錄的值,然後比較第二個記錄和第三個記錄得關鍵字,以此類推,直到第n 1個記錄和第n個記錄得關鍵字比較過為止。上述過程稱為第一趟氣泡排序,其結果是關鍵字最大的記錄被交換到...
各種內部排序
include using namespace std void swap int x,int y insertsort void insertsort int a,int n a j 1 temp bubble sort 下沉 void bubblesort1 int a,int n if fla...