引用 | 編輯
jasonh920
2005-03-25 13:44 |
樓主
▼ |
||
x0
請問各位大大幫一下小弟.這次作業想破了頭,就是不知道如何下手. 眼睜睜看著交作業的時間又要到了. 所以想請各位大大幫忙小弟,要不然真不知道 這個程式要如何作壓.... 麻煩各位大大們了.... 一. 自訂一個數列(陣列)使用泡沫排序法進行排序動作 二. 將第一點排序完成的數列使用二分搜尋法進行搜尋動作 三. 一、二點功能需加入狀態追蹤 四. 將一、二點寫成函式的形態 五 .執行範例如 圖二、三、四、五 函式格式與說明 void print(int array[] , int length); //自訂列印陣列函數 void bubble_sort(int bubble[] , int length , int control); //泡沫排序 int binary_search(int binary[] ,int length , int search , int low_limit ,int up_limit , int control); //二分搜尋法 參數說明 int array[] 欲列印陣列 ; int lenght 欲列印陣列長度 int bubble[] 欲排序陣列 ; int lenght 欲排序陣列長度 ; int control 追蹤控制變數 int binary[] 欲搜尋陣列 ; int lenght 欲搜尋陣列長度 ; int search 欲搜尋的數值 ; int up_limit 二分法搜尋初始上限 ; int low_limit 二分法搜尋初始下限 ; int control 追蹤控制變數 #include <cstdlib> #include <iostre .. 訪客只能看到部份內容,免費 加入會員 x0
|
引用 | 編輯
唐老鴨
2005-03-25 20:09 |
1樓
▲ ▼ |
請問一下你的a跟b還有c跟d...選項的normal跟detail差別在哪裡....妳的題目不夠完整我無法作答= ="....
不然bubble sort和binary search的演算法都不算難.....基本你照書來改就好了..... x0 |
引用 | 編輯
jasonh920
2005-03-26 01:15 |
2樓
▲ ▼ |
下面是引用唐老鴨於2005-03-25 20:09發表的 : "//程式碼"的部份是老師要我們填進自己程式的部份. 或者是"完成的方式不限制 (除了互抄) 不一定要用我的 主程式,但函式定義一定要一樣(函數名稱)"就可以了. 但我卻是想了好幾天都猜不透要如何去解. 麻煩大大您了... 其實我是覺得真的很難啦!!因為我邏輯觀念實 在是不怎麼好... 而且現在又是隨修,根本就沒有同學可以討論. 老師又揚言要當至少二十個以上... 真是快哭出來了..... x0 |
引用 | 編輯
唐老鴨
2005-03-26 03:51 |
3樓
▲ ▼ |
下面是引用jasonh920於2005-03-25 13:44發表的 [求助]學校的作業寫不出來,關於泡沫排序法和二分搜尋法的程式: 看來你不是很聽的懂我的意思..... 首先.... 我的第一個問題是 int value[size]={57,19,33,26,6};你是要用給好的這五個數來排就好....還是要由使用者來輸入一些數字....之後再將這些數做排列.... 第二....你宣告int array[size];是要拿來做什麼用的..... 第三....你的題目"三. 一、二點功能需加入狀態追蹤"你所要做的是什麼.....不是很懂她的意思....是說要將每一次的排序(譬如排了十次才排好)...分別列他的進度做到哪嗎..... 最後一點.....照你的程式....如果你的輸入是A....就做bubble_sort(normal)...如果是B....就做bubble_sort(detail)....我不知道他的差別在哪....因為我就只知道一種bubble sort的演算法....不知道bubble sort還有分你要用normal的排列....還是detail的排列....不然你的程式裡....你的"control"我可能用不到....所以選A跟選B都是一樣的....當然binary_serach也是同樣的問題....這才是我想問你的..... x0 |
引用 | 編輯
唐老鴨
2005-03-26 06:15 |
4樓
▲ ▼ |
下面是引用jasonh920於2005-03-26 01:15發表的 : 如果說上面的主程式是你寫的.... 那我會改掉大部分的部份.... 用我自己的想法來寫.... 但如果那是老師的版本.... 那上面那篇留言.... 有蠻多問題要問你的.... 所以你先告知你真正的題目要求.... 我在來給你內容..... 基本上那兩個函式的部份不會超過二十行..... 不過作業還是要自己寫比較好.... 有學到才重要 ..... x0 |
引用 | 編輯
jasonh920
2005-03-26 15:40 |
6樓
▲ ▼ |
下面是引用唐老鴨於2005-03-26 03:51發表的 : 其實我也是知道功課要自己寫,但這次我真的想不透怎麼去寫. 才會上來求助大大們的... 助教的意思是說.利用那五個數字來做排列就可以了.但要我們 可以輸入,a,b,c,d來做為選擇性的排列方式. 或許我表達的能力比較差. 所以我把我們助教的範例貼上去好了. http://async.eecs.stut.edu.tw/stut/ds2005s/hw/index.htm 第五周:作業五:泡沫排序 與 二分搜尋 唐老鴨大大麻煩您了...還有各位大大也是.... x0 |
引用 | 編輯
唐老鴨
2005-03-26 18:55 |
7樓
▲ ▼ |
我照妳們老師的要求寫好了....只有一點點改變而已....剩下完全是照妳們老師的圖做的.....
這是程式碼...... 複製程式 #include <cstdlib> #include <iostream> using namespace std; void print(int array[] , int length);//自訂列印陣列函數 void bubble_sort(int bubble[] ,int length , int control); //泡沫排序 int binary_search(int binary[] , int length , int search , int low_limit ,int up_limit , int control);//二分搜尋法 int main(int argc, char *argv[]) { const int size = 5;//自訂長度 int value[size]={57,19,33,26,6}; //自訂數列 //int array[size]; //我沒用到這個 int i=0 , j=0; int find_value=0; int select=0; char determine; printf("Select mode : a.bubble_sort(normal) B.bubble_sort(detail) C.Binary_search(normal) D.Binary_search(detail)\n"); scanf("%c",&determine); if(determine == 'A' || determine == 'a') { select= 0; printf("array value : "); print (value,size); bubble_sort(value,size,select); } else if(determine== 'B' || determine == 'b') { select=1; printf("array value : "); print(value,size); bubble_sort(value,size,select); } else if(determine == 'C' || determine == 'c') { select=0; printf("array value : "); print(value,size); printf("enter search value :\n"); scanf("%d",&find_value); bubble_sort(value,size,select); binary_search(value ,size ,find_value ,0 ,size-1 ,select); } else if (determine == 'D' || determine == 'd') { select=1; printf("array value : "); print(value,size); printf("enter search value :\n"); scanf("%d",&find_value); bubble_sort(value,size,select); binary_search(value ,size , find_value ,0 ,size-1 ,select); } system("PAUSE"); return 0; } void bubble_sort(int bubble[] , int length , int control) { int i,j; int temp; for(i=0; i<length-1; i++) { for(j=i+1; j < length; j++) { if(control==1) { printf("%3d%3d\n",i,j); printf("%3d%3d\n",bubble[i],bubble[j]); printf("array value : "); print(bubble,length); } if(bubble[i]>bubble[j]) { if(control==1) { printf("%3d%3d exchange\n",bubble[i],bubble[j]); } temp=bubble[j]; bubble[j]=bubble[i]; bubble[i]=temp; if(control==1) { printf("array value : "); print(bubble,length); } } } } if(control==0) { printf("array value : "); print(bubble,length); } } int binary_search(int binary[] ,int length ,int search , int low_limit , int up_limit , int control) { int middle; int find=0; while(low_limit<=up_limit) { middle=(low_limit+up_limit)/2; if(control==1) { printf("\nup_limit = %d\n",binary[up_limit]); printf("low_limit = %d\n",binary[low_limit]); printf("midpoint = %d\n",binary[middle]); printf("search = %d\n",search); printf("\n"); } if(search>binary[middle]) low_limit=middle+1; else if(search<binary[middle]) up_limit=middle-1; else if(search==binary[middle]) { find=1; break; } } if(find==1) printf("Find %d\n",search); else printf("No Find %d\n",search); return find; } void print(int array[] , int length) { int i=0; for(i=0 ; i<length ; i++) { printf("%3d",array[i]); } printf("\n"); } x0 |