實現**如下:
# include
# include
# include
//內部排序
/*本篇**包括:直接插入排序、折半插入排序、希爾插入排序、氣泡排序、快速排序、簡單選擇排序、2路歸併排序*/
//定義結構體陣列
typedef
struct array
array,
* parr;
//初始化陣列
parr init_array
(parr parr);/*
直接插入排序:
空間複雜度:o(1);時間複雜度:最好o(n),平均o(n2),最壞o(n2);穩定性:穩定
適用於順序儲存和鏈式儲存
*/void
insertsort
(parr parr);/*
折半插入排序:
空間複雜度:o(1);時間複雜度:最好o(n),平均o(n2),最壞o(n2);穩定性:穩定
適用於順序儲存
*/void
bin_insertsort
(parr parr);/*
希爾插入排序:
空間複雜度:o(1);時間複雜度:一般o(n1.3),最壞o(n2);穩定性:不穩定
適用於順序儲存
*/void
shell_insertsort
(parr parr);/*
氣泡排序:
空間複雜度:o(1);時間複雜度:最好o(n),平均o(n2),最壞o(n2);穩定性:穩定
適用於順序儲存和鏈式儲存
*/void
bubblesort
(parr parr);/*
快速排序:
空間複雜度:o(log2n);時間複雜度:最好o(nlog2n),平均o(nlog2n),最壞o(n2);穩定性:不穩定
適用於順序儲存(鏈式儲存)
*/void
quicksort
(parr parr,
int low,
int high)
;//輔助快速排序的partition函式
intpartition
(parr parr,
int low,
int high);/*
簡單選擇排序:
空間複雜度:o(1);時間複雜度:最好o(n2),平均o(n2),最壞o(n2);穩定性:不穩定
適用於順序儲存和鏈式儲存
*/void
selectsort
(parr parr);/*
2路歸併排序:
空間複雜度:o(n);時間複雜度:最好o(nlog2n),平均o(nlog2n),最壞o(nlog2n);穩定性:穩定
適用於順序儲存和鏈式儲存
*/void
mergesort
(parr parr,
int low,
int high)
;//2路歸併排序輔助函式merge
void
merge
(parr parr,
int low,
int mid,
int high)
;//2路歸併輔助陣列
int arraylength =
100;
int* b =
(int*)
malloc
(sizeof
(int
)* arraylength)
;int
main
(void
)//初始化陣列
//陣列第一位作為哨兵幫助排序
parr init_array
(parr parr)
for(
int i =
1; i<=parr->length; i++
)return parr;
}//直接插入排序
void
insertsort
(parr parr)
}//折半插入排序
void
bin_insertsort
(parr parr)
for(j=i-
1; j>=high+
1; j--
) parr->pbase[j+1]
= parr->pbase[j]
; parr->pbase[high+1]
= parr->pbase[0]
;}}//希爾排序
void
shell_insertsort
(parr parr)}}
}//氣泡排序
void
bubblesort
(parr parr)}if
(flag)
return;}
}//輔助快速排序的partition函式
intpartition
(parr parr,
int low,
int high)
parr->pbase[low]
= parr->pbase[0]
;return low;
}//快速排序
void
quicksort
(parr parr,
int low,
int high)
}//簡單選擇排序
void
selectsort
(parr parr)}}
//2路歸併排序輔助函式merge
void
merge
(parr parr,
int low,
int mid,
int high)
while
(i<=mid)
parr->pbase[k++
]= b[i++];
while
(j<=high)
parr->pbase[k++
]= b[j++];
}//2路歸併排序
void
mergesort
(parr parr,
int low,
int high)
}
學習c語言資料結構的一些預備知識
資料結構 筆記 預備知識 一.指標 我們將記憶體中位元組的編號稱為位址 address 或指標 pointer 位址從 0 開始依次增加,對於 32 位環境,程式能夠使用的記憶體為 4gb,最小的位址為 0,最大的位址為 0xffffffff。c語言用變數來儲存資料,用函式來定義一段可以重複使用的 ...
基於C語言資料結構 一些錯誤
include stdio.h include malloc.h define maxsize 50 typedef char elemtype typedef struct lnode linklist void initlist linklist l void getelem linklist ...
一些C 資料結構知識
陣列 1.大小固定 2.記憶體連續 3.方便訪問 4.不方便新增刪除 5.儲存單一型別元素 arraylist 陣列列表 1.記憶體連續,可以通過下標訪問,大小不固定 2.方便訪問,不方便新增刪除.3.儲存不同型別的資料.訪問的是object型別,裝拆箱印象效能 list是乙個介面,arraylis...