完整的課程設計

2022-11-29 03:30:05 字數 2685 閱讀 9649

目錄摘要 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...