/**
直接插入排序
時間複雜度:o(n^2)
空間複雜度:o(1)
*/void insertsort(int r, int n)
for(j=i-1; j>high; --j) //將high後面的元素全部後移一位
r[j+1] = r[j];
r[high+1] = temp; //插入元素
} }
/**
希爾排序
時間複雜度:o(n^2)
空間複雜度:o(1)
*/void shellsort(int r, int n)
r[k+gap] = temp;}}
} }}
/**
氣泡排序
時間複雜度:o(n^2)
空間複雜度:o(1)
*/void bubblesort(int r, int n)
} if(flag == 0) //如果未發生交換代表序列有序
return;
}}
/**
快速排序
時間複雜度:o(n*log2^n)
空間複雜度:o(log2^n)
*/void quicksort(int r, int low, int high)
while(ii && r[j]>=temp) --j; //從左往右掃瞄找到小於temp的元素
if(i排序演算法
時間複雜度
空間複雜度
演算法穩定性
直接插入排序
o(n^2) 最壞、平均
o(n) 最好
o(1)
穩定折半插入排序
o(n^2) 最壞、平均
o(n*log2^n) 最好
o(1)
穩定希爾排序
o(n^2)
o(1)
不穩定氣泡排序
o(n^2) 最壞、平均
o(n) 最好
o(1)
穩定快速排序
o(n^2) 最壞
o(n*log2^n)最好、平均
o(log2^n)
不穩定簡單選擇排序
o(n^2)
o(1)
不穩定堆排序
o(n*log2^n)
o(1)
不穩定二路歸併排序
o(n*log2^n)
o(n)
穩定基數排序
o(d(n+r_d)) 最壞、平均
n:序列關鍵字數
d:關鍵字的關鍵位數
r_d:關鍵字基的個數
o(r_d)
穩定穩定性:快速排序、希爾排序、簡單選擇排序、堆排序 是不穩定的,其餘都是穩定的。
資料結構排序大全 C
排序大全 插入排序 氣泡排序 二叉樹排序 歸併排序及其他線形排序是穩定的 選擇排序 希爾排序 快速排序 堆排序是不穩定的 插入排序 氣泡排序 選擇排序的時間複雜性為 o n2 其它非線形排序的時間複雜性為 o nlog2n 線形排序的時間複雜性為 o n 歸併排序的輔助空間為 o n 其它排序的輔助...
C 資料結構 氣泡排序
include typedef int infotype typedef enum boolean define n 5 假設的檔案長度,即待排序的記錄數目 typedef int keytype 假設的關鍵字型別 typedef struct rectype typedef rectype seq...
資料結構 c 排序演算法
排序是將乙個記錄的任意序列,重新排列成乙個按關鍵字有序的序列 按非遞減或非遞增 排序演算法按排序過程中依據的不同原則可以大致分為五類 插入排序 交換排序 選擇排序 歸併排序 基數排序。下面程式均使無序序列排序成非遞減序列。資料結構使用順序表,並初始化8個元素 49,38,65,97,76,13,27...