廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 4287 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
minieudaemon
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x18
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++][求助] 快速排序法的邏輯錯誤[己解決]謝謝大家幫助
各位大大
小弟看完書看想自己照著演算法依樣畫葫蘆...但是
錯出現邏輯錯誤...麻煩各位大大幫忙指正...並教導
小弟一下...因為今天晚上都在想這個問題...

先謝謝樓下大大....不過小弟剛剛照您的code去compiler
跟我原本的情況一樣...就是compiler有過...但卻無法跑出
排序後的結果....

// 快速排序法
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
using namespace std;
void Qsort(int *,int,int);   //函數原型,傳入 陣列,起點,終點
void showdata(int *,int);     //印出陣列的值
int main()
{
  srand(time(NULL));
  cout << "請輸入陣列大小:&quo ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



[ 此文章被minieudaemon在2008-11-21 20:42重新編輯 ]

此文章被評分,最近評分記錄
財富:0 (by 三仙)



獻花 x0 回到頂端 [樓 主] From:臺灣 | Posted:2008-11-20 21:46 |
teldeanmac85 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x21
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

複製程式
#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <ctime>
using namespace std;

void Qsort(int *,int,int,int);   //函數原型,傳入 陣列,起點,終點 
void showdata(int *,int);     //印出陣列的值

int main(int argc, char* argv[])
{
       srand(time(NULL));
    cout << "請輸入陣列大小:";
    int size ;
    cin >> size;
    int *data = new int [size];
    
       for(int i=0;i<size;i++)
       data[i]=rand()%99+1;           //將陣列設值 1~100內
    showdata(data,size);

    cout << "排序後..."<<endl;
       Qsort(data,0,size-1,size);
       showdata(data,size);

    delete [] data;
  
    system("pause");
    return 0;
}
void showdata(int *d,int size)
{
    for(int i=0;i<size;i++)
              cout<< setw(2)<< d[i] << " ";
    cout<<endl;
    return;
}

void Qsort(int *data,int left,int right,int MAX)
{
    int temp = 0;
    int i,j,k;
    if(left < right){
              k=data[left];
              i=left;
              j=right+1;
              while(1){
                     while(i+1<MAX && k>data[++i]) ;        // i 由左向右找

                     while(j-1>-1 && k<data[--j]);           //j 由右向左找
        
                     if(i>=j) break;
            
                     //兩數交換
                     temp=data[i];
                     data[i]=data[j];
                     data[j]=temp;
              }//end while

              data[left] = data[j]; 
              data[j] = k; 

              Qsort(data,left,j-1,MAX);                 //遞迴呼叫
              Qsort(data,j+1,right,MAX);
       } //end if
}  

此文章被評分,最近評分記錄
財富:10 (by 三仙) | 理由: 因為您的參與,讓程式設計更容易!! ^^


獻花 x1 回到頂端 [1 樓] From:局域網對方和您在同一內部網 | Posted:2008-11-21 09:18 |
minieudaemon
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x18
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

先謝謝大大....不過小弟剛剛照您的code去compiler跟
我原本的情況一樣...就是compiler有過...但卻無法跑出
排序後的結果....^^


我是用 dev c++ 5 beta 8 release (4.9.8.0)


[ 此文章被minieudaemon在2008-11-21 20:39重新編輯 ]


獻花 x0 回到頂端 [2 樓] From:臺灣 | Posted:2008-11-21 15:18 |
WindinCloud
數位造型
個人文章 個人相簿 個人日記 個人地圖
路人甲
級別: 路人甲 該用戶目前不上站
推文 x0 鮮花 x0
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

下面是引用minieudaemon於2008-11-21 15:18(2樓)發表的 :
先謝謝大大....不過小弟剛剛照您的code去compiler跟
我原本的情況一樣...就是compiler有過...但卻無法跑出
排序後的結果....^^
你要不要說說你編譯的環境
我有測試過他的程式是OK的唷~

./quick.exe
請輸入陣列大小:5
66  1 54 30  8
排序後...
 1  8 30 54 66

此文章被評分,最近評分記錄
財富:10 (by 三仙) | 理由: 因為您的參與,讓程式設計更容易!! ^^


獻花 x0 回到頂端 [3 樓] From:未知地址 | Posted:2008-11-21 20:27 |
minieudaemon
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x18
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

嗯...我剛剛再複製跑了一次...真的有排出來了....
不過我用的是同一個compiler...現在有排出來了...
我下午一樣複製...卻沒有成功... 表情

謝謝樓上兩位大大...我要好好去研究一下兩者
的差別了... 表情 ...看看自己那裡出了問題...


獻花 x0 回到頂端 [4 樓] From:臺灣 | Posted:2008-11-21 20:46 |
teldeanmac85 手機
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x1 鮮花 x21
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

請問你的Error Message是什麼?
我的環境是VC 6.0

int main(int argc, char* argv[])   // 改成int main(void)

試看看 我記得dev c++ 好像compile不會過~ 表情


獻花 x0 回到頂端 [5 樓] From:局域網對方和您在同一內部網 | Posted:2008-11-21 21:09 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.042100 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言