目錄摘要 2
前言 3
正文 4
一、採用類c語言定義相關的資料型別 4
二、程式操作過程圖 6
三、程式流程圖 7
四、程式除錯分析和結果 9
五、源程式(帶注釋) 11
六、各種排序演算法的效能分析 20
總結 21
心得體會 23
參考文獻 24
致謝 26
附件 i 部分源程式** 27
排序(sorting)是計算機程式設計的一種重要操作,他的功能是將乙個資料元素(或記錄)的任意序列,重新排列乙個按關鍵字有序的序列。由於待排序的記錄數量不同,使得排序過程中涉及的儲存器不同,可將排序方法分為兩大類:一類是內部排序,指的是待排序記錄存放在計算機隨機儲存器中進行的排序過程;另一類是外部排序,指的是待排序記錄的數量很大,以致記憶體一次不能容納全部記錄,在排序過程中尚需對外存進行訪問的排序過程。
內部排序又分為:插入排序、快速排序、選擇排序、歸併排序和基數排序。其中插入排序又分為:
直接插入排序、其他插入排序和希爾排序;選擇排序分為:簡單選擇排序、樹形選擇排序和堆排序;基數排序又分為:多關鍵字的排序和鏈式基數排序。
本次課程設計就是內部排序中的幾個排序方法。
關鍵字: 內部排序關鍵字重新排列
「天之道,損有餘而補不足」,自然萬物發展的規律, 都是傾向於消除差異。無獨有偶,熱力學第二定律也指出:任意封閉的系統,都會朝著熵增加的方向發展。
從資訊理論的角度來看,也就是傾向於更加無序。然而,「 人之道,則不然,損不足以奉有餘」,人總是偏好有序。就資料處理而言,有序性的確十分有用。
所謂排序, 就是按照某種次序,重新排列某一串行中的所有元素。為此,任意一對元素之間都應該能比較大小,即在所有元素之間可以定義乙個全序關係。排序不僅可以作為查詢等操作的預處理計算,而且也是實際應用中需要反覆進行的一項基本操作。
前言很多涉及計算器程式的演算法都是以棧的相關操作為基礎,通過對計算器演算法的設計,有利於在學習中更好的理解棧及其相關的操作。但是,這款計算器主要是通過陣列進行的。沒有直接使用棧,但用到棧的思想。
我們在寫程式時,大框架已成的情況下,仍然發現有些錯誤很難找到,對於這樣的問題,可以利用計算機糾錯功能,先執行,再根據題提示修改和完善程式。
在計算器用到的演算法中,c語言演算法可讀性很強,一方面,是因為c語言是高階語言,是面向程式設計師的語言,二是c語言的功能是很完備的,可以達到事半功倍的效果,和其他語言相比量是比較少。
(1)、程式的模組
1、輸入
2、選擇
3、輸出
(2)、模組的功能
1、輸入模組的功能:利用隨機函式產生n個數(超過20000),由於產生的數較多,不好檢視排序後的順序是否正確,所以在本程式中只隨機產生100個數。
create(a,b,&n) 是乙個隨機函式,它可以隨機產生100個隨機數
2、選擇模組的功能:選擇數字則進行對應的排序;選擇字母則進行重新產生隨機數和退出的操作。
1————插入排序————insertsort(a,n)
2————希爾排序———xiersort(a,n)
3————快速排序————quicksort(a,1,n)
4————堆排序—————duisort(a,n)
c(c)———重新產生20個隨機數——create(a,b,&n)
n(n)———退出程式
3、輸出模組的功能:把利用各種排序方法排好順序的數輸出到乙個資料夾中。
writefile1(a,n)———向指定的檔案中寫入排序前的數
writefile2(a,n)———向指定的檔案中寫入用各種排序方法排好序的數
(1)、執行程式,程式利用隨機函式產生100個數,選擇「1」,進行插入排序;在選擇「2」,進行希爾排序,實驗過程截圖如下:
(3)選擇「3」,進行希爾排序;再選擇「4」,進行快速排序,實驗過程截圖如下:
((4)、選擇「5」,進行堆排序。
#include<>
#include<>
#include
#include<>
#define size 20000
struct element
list[size];
///////建立乙個陣列////////
int creat
return(n);
}輸出陣列
void print(struct element a[size],int n)
儲存到檔案
void s**e(struct element a[size],int n, char filename )
fclose ( fp );
}直接插入排序
void insert_sort(element a, int n)
printf("輸出直接插入排序的結果:\n");
}希爾排序
void shell(struct element a[size],int n)
k=k/2;
}for(i=0;i a[i].key=a[i+1].key;
printf("輸出希爾排序的結果:\n");
}快速排序
int hoare(struct element a[size],int l,int h)//分割槽處理函式
{ int i,j;
struct element x;
i=l;
完整鋼結構課程設計
附件 設計資料 1 設計題目 單層工業廠房屋蓋結構 梯形鋼屋架設計 2 設計任務及引數 第五組 某地一機械加工車間,長84m,跨度24m,柱距6m,車間內設有兩台40 10t中級工作制橋式吊車,軌頂標高18.5m,柱頂標高27m,設計烈度7度。採用梯形鋼屋架,封閉結合,1.5 6m預應力鋼筋混凝土大...
課程設計說明書完整
唐山學院 plc 課程設計 題目基於西門子plc的電梯控制系統設計及除錯 系 部 智慧型與資訊工程學院 班級 12點本3班 姓名史立學 學號 420208312 指導教師田麗欣田紅霞 2016 年 1 月 4 日至 1 月 15 日共 2 周 2016年 1月 15 日 班級 專業設計人 一 課程設...
完整版 汙水廠的畢業課程設計
水質工程學課程設計 汙水廠學院 蘇州科技學院天平學院 專業 給水排水工程班級 0812 指導教師 黃天寅陳新 2011年12月 目錄第一章設計概論 1.1設計任務1 1.2設計原始資料1 第二章汙水處理廠規模及汙水量確定 2.1汙水廠的設計規模2 2.2水質2 第三章汙水廠工藝方案確定及技術比較 3...