滿腦子都是階段/狀態/決策……學無止境呀
發一點基本的排序演算法,分成很多個檔案寫的,每個檔案前面帶了注釋,一起發出來,結構如下:
基礎排序演算法檔案結構
sort.h
標頭檔案
main.c
主演示程式
printkeys.c
資料輸出
ifcontinue.c
演示控制
random.c
隨機初始化資料
bubblesort.c
氣泡排序演算法
quicksort.c
快速排序演算法
insort.c
插入排序演算法
shellsort.c
希爾排序演算法
演示按 隨機化資料->輸出->排序->輸出 的流程進行,演算法很簡單不想多說。
/**/
/*sort.h: 排序演算法演示標頭檔案
*/
#include
<
stdio.h
>
#define
maxn 100
typedef
struct
... record;
/**/
/*幾種排序演算法演示
by danmarner
email: [email protected]
*/
#include
"sort.h
"int
random(record r,
intn);
intprintkeys(record r,
intn);
intifcontinue(
void
);void
inssort (record r,
intn);
void
shellsort (record,
intn);
void
bubblesort(record r,
intn);
void
quicksort (record r,
ints,
intt);
intmain(
void
)...
/**/
/*printkeys.c: 輸出排序關鍵字
*/
#include
"sort.h
"int
printkeys (record r,
intn)
...
/**/
/*ifcontinue.c: 控制是否繼續演示
*/
#include
<
stdio.h
>
#include
<
stdlib.h
>
intifcontinue(
void
)...
/**/
/*random.c: 用隨機數給r[0].key-r[n-1].key賦值
*/
#include
<
stdlib.h
>
#include
<
time.h
>
#include
"sort.h
"int
random (record r,
intn)
...
/**/
/*bubblesort.c: 演示氣泡排序
*/
#include
"sort.h
"void
bubblesort(record r,
intn)
...}}
/**/
/*quicksort.c 快速排序演算法
*/
#include
"sort.h
"void
quicksort (record r,
ints,
intt)
...r[low]
=pivot;
if(s
<
low) quicksort(r,s,low-1
);if
(t>
high) quicksort(r,high+1
,t);}
/**/
/*inssort.c: 插入排序演算法
*/
#include
"sort.h
"void
inssort (record r,
intn)
...}
/**/
/*shellsort.c: 希爾排序演算法
*/
#include
"sort.h
"void
shellsort (record r,
intn)
...dk/=2
;}}
排序演算法演示
下面是排序演算法演示程式,比較直觀顯示排序演算法執行規律 flash 200,200 有關裡面三種排序演算法說明如下 1.插入排序 首先新建乙個空列表,用於儲存已排序的有序數列 我們稱之為 有序列表 從原數列中取出乙個數,將其插入 有序列表 中,使其仍舊保持有序狀態。重複2號步驟,直至原數列為空。插...
演算法 氣泡排序演示
排序原理 1 比較相鄰的元素。如果前乙個元素比後乙個元素大,就交換這兩個元素的位置 2 對每一對相鄰元素做同樣的工作,從開始第一對元素到結尾的最後一對元素。最終最後位置的元素就是最大值。public class bubblesort 交換兩個位置的元素 private static void exe...
演算法 希爾排序演示
希爾排序是針對插入排序的改良版。排序原理 1 選定乙個增長量h,按照增長量h作為資料分組的依據,對資料進行分組 2 對分好組的每一組資料完成插入排序 3 減少增長量,最小減為1,重複第二步操作 希爾排序 public class shellsort while h 1 else h h 2 判斷兩個...