資料結構排序演算法
一,排序基本概念
演算法的穩定性
演算法的穩定性與演算法的效能無關
內部排序
元素存放在在記憶體中的排序
外部排序
元素不斷在內外存之間移動的排序
二,插入排序
直接插入排序
適用於順序儲存和鏈式儲存
1.1 源**:
void insertsort(elemtype a,int n)
}
2.2 效能分析
比較次數為o(nlog2^n)
時間複雜度o(n^2)
3 希爾排序
不穩定且僅適用於順序儲存
3.1 源**:
void shellsort(elemtype a,int n)
}if(flag==false)
return ;
}
1.2效能分析
空間效率 o(1)
時間複雜度 o(n^2)
快速排序
2.1 源**
//快速排序,不穩定,
void quicksort(elemtype a,int low,int high)
void adjustdown(elemtype a,int k,int len)
}//for
a[k]=a[0];
}//堆排序
void heapsort(elemtype a,int len)//for
}//向上調整堆
void adjustup(elemtype a,int k)
//for
while(j<=mid) a[k++]=b[j++];
while(j<=high) a[k++]=b[j++];
}//合併
void mergesort(elemtype a,int low,int high){
if(low
1.2 效能分析
空間效率 o(n)
時間效率 o(nlog2^n)
六,基數排序
效能分析
穩定空間效率 o® r個佇列
時間效率 o(d(n+r))
七,歸納總結
資料結構 排序演算法
include include define maxitem 100 typedef char keytype 5 typedef int elemtype typedef struct rec elemnode maxitem 氣泡排序演算法 void bubblesort elemnode r,...
資料結構 排序演算法
排序演算法分為內部排序和外部排序兩大類。內部排序 在計算機記憶體中完成的排序演算法 外部排序 不能再記憶體中文完成,必須在磁碟或者磁帶上完成的排序演算法 內部排序是研究的重點問題,通常我們講的八大排序演算法也主要是講的內部排序演算法。排序演算法的穩定性和時間空間複雜度 本文重點介紹以下幾種排序演算法...
資料結構 排序演算法
直接插入排序是指將r i r n 插入到已經有序的r 1 r i 1 序列中。r 0 是乙個哨兵,起到作為邊界條件並作為暫存單元的作用。實際上,一切為簡化邊界條件而引入的附加節點 元素 均可稱為哨兵。例如單鏈表中的頭結點。對於有n個記錄的集合,要進行n 1趟排序。其最優時間複雜度是o n 平均時間複...