广告广告
  加入我的最爱 设为首页 风格修改
首页 首尾
 手机版   订阅   地图  繁体 
您是第 4540 个阅读者
 
发表文章 发表投票 回覆文章
  可列印版   加为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.082399 second(s),query:16 Gzip disabled
本站由 瀛睿律师事务所 担任常年法律顾问 | 免责声明 | 本网站已依台湾网站内容分级规定处理 | 连络我们 | 访客留言