freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

多種排序算法動態(tài)演示軟件的設(shè)計與開發(fā)—計算機畢業(yè)設(shè)計(編輯修改稿)

2025-01-04 01:14 本頁面
 

【文章內(nèi)容簡介】 )。 第 11 頁 共 21 頁 ASSERT_VALID(pDoc)。 if(IsSortBubble) { CBrush BlueBrush(RGB(0,255,0))。 pDCTextOut(250,200,冒泡排序演示 )。// for(i=0。iN。i++) { =170。 =250+i*2。 =+1。 =[i]。 pDCFillRect(amp。m_SortBubbleRect,amp。BlueBrush)。 } ()。 } 動態(tài)演示選擇算法模塊設(shè)計 表 44 為工程添加 IDR_MAINFRAME的菜單選項 ID 說明文字 功能描述 IDC_SORT_SELECT 選擇法排序 選擇法排序 表 45 打開類向?qū)В?Class Wizard)對話框向視圖類添加響應(yīng)函數(shù) Object ID Messages Messages 的描述 函數(shù)名 IDC_SORT_SELECT COMMAND 選擇該菜單 OnSortSelect 表 46 通過類查看( ClassView)選項卡,向視圖類添加成員變量 變量類型 變量名 功能描述 int m_SortSelect[N] 記錄關(guān)鍵字 CRect m_SortSelectRect 動態(tài)演示矩形范圍 BOOL IsSortSelect TRUE 表示進行選擇排序 在 頭文件,聲明選擇排序的全局函數(shù): UINT ThreadSortSelect(LPVOID lp)。 然后,在 構(gòu)建文件中添加實現(xiàn)選擇排序算法的函數(shù):ThreadSortSelect,代碼為: UINT ThreadSortSelect(LPVOID lp) { int i,j,key,tmp。 int *data。 data=pViewm_SortSelect。 for(i=0。iN1。i++) 第 12 頁 共 21 頁 { key=i。 for(j=i+1。jN。j++) { if(data[j]data[key]) { key=j。 pViewInvalidate(TRUE)。 } Sleep(DELAY1)。 } Sleep(DELAY)。 tmp=data[i]。 data[i]=data[key]。 data[key]=tmp。 } Sleep(DELAY)。 pViewInvalidate(TRUE)。 return 0。 } 在類中查看( Class View)選項,打開視圖類 CTtView,在其中修改構(gòu)建函數(shù),實現(xiàn)變量初始化: CTtView::CTtView() { int i。 srand((unsigned)time(NULL))。 for(i=0。iN。i++) m_SortSelect[i] =0。 pView=this。 IsSortSelect=FALSE。 } 修改響應(yīng)函數(shù)“ OnSortSelect” ,產(chǎn)生 070隨即整數(shù)來進行排序: void CTtView::OnSortSelect() { for(int i=0。iN。i++) { m_SortSelect[i]=(int)((double)rand()*(double)RAND_MAX)。 } IsSortSelect=TRUE。 第 13 頁 共 21 頁 AfxBeginThread(ThreadSortSelect,GetSafeHwnd())。 } 最后修改 OnDraw 函數(shù),利用畫刷實現(xiàn)動態(tài)繪制: void CTtView::OnDraw(CDC* pDC) { int i。 CTtDoc* pDoc = GetDocument()。 ASSERT_VALID(pDoc)。 if(IsSortSelect) { CBrush BlueBrush(RGB(0,255,0))。 pDCTextOut(50,200,選擇排序演示 )。 for(i=0。iN。i++) { =170。 =50+i*2。 =+1。 =[i]。 pDCFillRect(amp。m_SortSelectRect,amp。BlueBrush)。 } ()。 } 動態(tài)演示快速算法模塊設(shè)計 表 47 為工程添加 IDR_MAINFRAME的菜單選項 ID 說明文字 功能描述 IDC_SORT_QUICK 快速法排序 快速法排序 表 48 打開類向?qū)В?Class Wizard)對話框向視圖類添加響應(yīng)函數(shù) Object ID Messages Messages 的描述 函數(shù)名 IDC_SORT_QUICK COMMAND 快速該菜單 OnSortQuick 表 49 通過類查看( ClassView)選項卡,向視圖類添加成員變量 變量類型 變量名 功能描述 int m_SortQuick[N] 記錄關(guān)鍵字 CRect m_SortQuickRect 動態(tài)演示矩形范圍 BOOL IsSortQuick TRUE 表示進行選擇排序 在 頭文件,聲明選擇排序的全局函數(shù): UINT ThreadSortQuick(LPVOID lp)。 void QuickSort(int * data,int s,int t)。 第 14 頁 共 21 頁 在 構(gòu)建文件中添加實現(xiàn)快速排序算法的函數(shù):ThreadSortSelect 和 QuickSort,代碼為: void QuickSort(int * data,int low,int high) { int i=low,j=high。 int tmp,key。 if(lowhigh) { tmp=data[low]。 while(ij) { while(ij) { if(data[j]=tmp) { j。 Sleep(DELAY1)。 } else { break。 } } key=data[i]。 data[i]=data[j]。 data[j]=key。 Sleep(DELAY)。 pViewInvalidate(TRUE)。 while(ij) { if(data[i]=tmp) { i++。 Sleep(DELAY1)。 } else { break。 } } key=data[i]。 data[i]=data[j]。 第 15 頁 共 21 頁 data[j]=key。 Sleep(DELAY)。 pViewInvalidate(TRUE)。 } QuickSort(data,low,i1)。 QuickSort(data,i+1,high)。 } } UINT ThreadSortQuick(LPVOID lp) { int * data。 data=pViewm_SortQuick。 pViewInvalidate(TRUE)。 Sleep(DELAY)。 QuickSort(data,0,N1)。 return 0。 } 打開類( Class View) 中視圖類 CTtView,在其中修改構(gòu)建函數(shù),實現(xiàn)變量初始化: CTtView::CTtView() { int i。 srand((unsigned)time(NULL))。 for(i=0。iN。i++) m_SortQuick[i] =0。 pView=this。 IsSortQuick=FALSE。 } 修改響應(yīng)函數(shù)“ OnSortQuick” ,產(chǎn)生 070 隨即整數(shù)來進行排序: void CTtView::OnSortQuick() { for(int i=0。iN。i++) { m_SortQuick[i]=(int)((double)rand()*(double)RAND_MAX)。 } IsSortQuick=TRUE。 AfxBeginThread(ThreadSortQuick,GetSafeHwnd())。 } 第 16 頁 共 21 頁 最后修改 OnDraw 函數(shù),利用畫刷實現(xiàn)動態(tài)繪制: void CTtView::OnDraw(CDC* pDC) { int i。 CTtDoc* pDoc = GetDocument()。 ASSERT_VALID(pDoc)。 if(IsSortQuick) { CBrush BlueBrush(RGB(0,255,0))。 pDCTextOut(450,200,快速排序演示 )。// for(i=0。iN。i++) { =170。 =450+i*2。 =+1。 =[i]。 pDCFillRect(amp。m_SortQuickRect,amp。BlueBrush)。 } ()。 } 同時比較三種算法模塊設(shè)計 表 410 為工程添加 IDR_MAINFRAME的菜單選項 ID 說明文字 功能描述 IDC_SORT_ALL 同時比較 三種方法同時進行比較 表 411 打開類向?qū)В?Class Wizard)對話框向視圖類添加響應(yīng)函數(shù) Object ID Messages Messages 的描述 函數(shù)名 IDC_SORT_ALL COMMAND 快速該菜單 OnSortAll 同時比較這三種排序,就是同時調(diào)用這三種排序演示線程,修改響應(yīng)函數(shù)OnSortAll: void CTtView::OnSortAll() { // TODO: Add your mand handler code here OnSortBubble1()。 OnSortQuick1()。 OnSortSelect1()。 } 系統(tǒng)的測試 每一個紅色(同時排序的藍色)的豎條都代表一個隨即數(shù)(以下相同) 第 17 頁 共 21 頁 ( 1)冒泡排序的動態(tài)演示開始 冒泡排序的動態(tài)演示結(jié)束 圖 42 冒泡演示開始 圖 43 冒泡演示結(jié)束 ( 2)選擇排序的動態(tài)演示開始 選擇排序的動態(tài)演示結(jié)束 圖 44 選擇演示開始 圖 45選擇演示結(jié)束 ( 3)快速排序的動態(tài)演示開始 快速排序的動態(tài)演結(jié)束 圖 46 快速演示開始 圖 47快速演示結(jié)束 同時演示三種排序,比較他們的排序過程的快慢。 ( 1)開始。 第 18 頁 共 21 頁 圖 48同時比較三種排序開始 ( 2)第一個排序 —— 快速排序完畢。 圖 49 快速排序結(jié)束 ( 3)第二個排序 —— 選擇排序完畢。 圖 410 選擇排序結(jié)束 ( 4)最后一個排序 —— 冒泡排序完畢。 圖 411 冒泡排序結(jié)束 系統(tǒng)的特點 在運行本系統(tǒng)的時候,選擇不同的菜單選項,能夠清楚的看出各種排序過第 19 頁 共 21 頁 程的變化,例如: ( 1)選擇“冒泡法排序”時,可以看見綠色的長條逐漸向左移動,完全驗證了冒泡排序算法的思想。 ( 2)選擇“選擇法排序”時,可以看見綠色的長條是被交換到左邊的過程,這個也完全證明了選擇排序算法的思 想。 ( 3)選擇“快速法排序”時,可以看見整個序列在經(jīng)過 i=j 的過程后,被分成了 2 個子序列,再排列兩個子序列后完成排序,這個也驗證了快速排序算法的思想。 ( 4)選擇“同時排序”時,可以清楚的看見三種算法之間效率的不同。通過觀看比較出誰快誰慢,體現(xiàn)出快速排序的優(yōu)越性。 結(jié) 論 通過本次系統(tǒng)的研究,可以看出各個不同的排序算法排序的過程,以及之間在排列整數(shù)時的差異。由于冒泡算法記錄的交換次數(shù)最多,所以它排序的速率最慢;選擇算法不用記錄太多的交換次數(shù),所以他的效率比冒泡算法快一些;快速算法比上面兩種排序記
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1