史萊姆論壇

返回   史萊姆論壇 > 專業主討論區 > 程式語言討論區
忘記密碼?
論壇說明

歡迎您來到『史萊姆論壇』 ^___^

您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的!

請點擊這裡:『註冊成為我們的一份子!』

Google 提供的廣告


發文 回覆
 
主題工具 顯示模式
舊 2006-11-25, 12:28 AM   #1
m7225
註冊會員
榮譽勳章
UID - 75170
在線等級: 級別:5 | 在線時長:55小時 | 升級還需:5小時級別:5 | 在線時長:55小時 | 升級還需:5小時級別:5 | 在線時長:55小時 | 升級還需:5小時級別:5 | 在線時長:55小時 | 升級還需:5小時級別:5 | 在線時長:55小時 | 升級還需:5小時
註冊日期: 2003-06-05
VIP期限: 2010-08
文章: 8
精華: 0
現金: 5505 金幣
資產: 5505 金幣
Question 疑問 - 一個C++結構化設計的問題

請注意看顯示的氣泡排序法在處理大型陣列時,其效率會很差。請執行以下簡單的修正,以便改進氣泡排序法的效率:
1.在第一回合中,最大的數目一定會放到陣列最後一個元素的位置,在第二回合之後,這最大的兩個數字就排好了,依此類推。若不想在每回合的比對時,都執行九次的比對動作,你可以修改氣泡排序法,讓它在第二回合比對時,只執行八次的比對動作,在第三回比對時,只執行七次的比對動作,依此類推。
2.如果陣列的資料己經排序好或接近排序好的狀態,則為什麼需要在每回合比對中,執行九回合的比對動作呢?請修改氣泡排序法,在每回合比對之後,檢查程式是否執行了任何的交換操作。如果沒有進行任何的交換動作,則陣列的資料一定己經排序完畢,所以程式就應該終止。如果程式執行過交換的動作,則我們至少需要要再進行一回合的比較。

#include<iostream>

using std::cout;
using std::end1;

#include<iomanip>

using std::setw;

int man()
{
const int arraySize = 10; //size of array a
int a[arraySize]={2,6,4,8,10,12,89,68,45,37};
int hold; //temporary location used to swap array elements

cout<< "Data items in original order\n";

//output original array
for (int i=0;i<arraySize; i++)
cout<<setw(4)<<a[i];
//bubble sort
//loop to control number of passes
for (int pass=0; pass<arraySize-1;pass++)

//loop to control number of comparisons per pass
for (int j=0;j<arraySize-1;j++)

//compare side-by-side elements and swap them if
//first element is greater than second element
if (a[j]>a[j+1]) {
hold=a[j];
a[j]=a[j+1];
a[j+1]=hold;

}//end if

cout <<"\nData items in ascending order\n";

//output sorted array
for (int k=0;k<arraySize;k++)
cout <<setw(4)<<a[k];

cout<<end1;

return 0; //indicates successful termination

} //end main

Data items in original orger
2 6 4 8 10 12 89 68 45 37
Data items in ascending order
2 4 6 8 10 12 37 45 68 89

如果你會C++結構化設計的話,請你幫我寫,謝謝^^
我會送給20點
我下禮拜二要交@@
m7225 目前離線  
送花文章: 0, 收花文章: 0 篇, 收花: 0 次
回覆時引用此帖
發文 回覆



發表規則
不可以發文
不可以回覆主題
不可以上傳附加檔案
不可以編輯您的文章

論壇啟用 BB 語法
論壇啟用 表情符號
論壇啟用 [IMG] 語法
論壇禁用 HTML 語法
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用


所有時間均為台北時間。現在的時間是 01:04 PM


Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.


SEO by vBSEO 3.6.1