| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 630 人关注过本帖
标题:[求助]快速排序出错在什么地方了?
只看楼主 加入收藏
mixmouse
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-8
收藏
 问题点数:0 回复次数:7 
[求助]快速排序出错在什么地方了?

快速排序出错在什么地方了,为什么得不到正确结果?
#include "stdafx.h"
#include <stdio.h>

int patition(int a[],int low, int high)
{
int pointkey;
pointkey=a[low];
while(low<high)
{
while((low<high)&&(a[high]>=pointkey)) --high;
a[low]=a[high];
while((low<high)&&(a[high]<=pointkey)) ++low;
a[high]=a[low];
}
a[low]=pointkey;
return low;
}

void qsort(int *a, int low, int high)
{
int k;
if(low<high)
{
k=patition(a,low,high);
qsort(a,low,k);
qsort(a,k+1,high);
}
}

void quicksort(int a[], int n)
{
qsort(a,0,n-1);
}


int main()
{
int a[10]={11,16,8,9,7,14,13,15,10,12};
int j;

quicksort(a,10);
for(j=0;j<10;j++)
printf("%d\t",a[j]);
return 1;

}

搜索更多相关主题的帖子: 快速 include return 
2007-10-16 20:18
mixmouse
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-8
收藏
得分:0 

没有人帮忙看看嘛?

2007-10-16 20:50
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

哈,才看到~~
我们机房马上关门了
帮你顶一下


2007-10-16 21:00
鸿工作室
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-10-14
收藏
得分:0 
{
while((low<high)&&(a[high]>=pointkey)) --high;
a[low]=a[high];
while((low<high)&&(a[high]<=pointkey)) ++low;
a[high]=a[low];
}
不是很看得懂你的算法,把你的思想说来听听啊。。。




2007-10-16 21:09
mixmouse
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-8
收藏
得分:0 

int patition(int a[],int low, int high)
{
int pointkey;
pointkey=a[low];//记录点
while(low<high)
{
while((low<high)&&(a[high]>=pointkey)) --high;
a[low]=a[high];//从后向前查找一个比pointkey小的数,将其与放到当前记录点的位置
while((low<high)&&(a[high]<=pointkey)) ++low;
a[high]=a[low];//从前向后查找一个比pointkey小的数,将其与放到当前记录点的位置

}
a[low]=pointkey;//
return low;//返回记录点的当前位置,
}

2007-10-16 21:22
mixmouse
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-10-8
收藏
得分:0 
请指点,我不知道问题在什么地方
2007-10-16 21:24
鸿工作室
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-10-14
收藏
得分:0 

int patition(int a[],int low, int high)
{
int pointkey;
pointkey=a[low];//记录点
while(low<high)
{
while((low<high)&&(a[high]>=pointkey)) --high;
a[low]=a[high];//从后向前查找一个比pointkey小的数,将其与放到当前记录点的位置
while((low<high)&&(a[high]<=pointkey)) ++low;
a[high]=a[low];//从前向后查找一个比pointkey小的数,将其与放到当前记录点的位置

}
a[low]=pointkey;//
return low;//返回记录点的当前位置,
}



把红色的地方改成low






2007-10-16 22:06
wzhgzj
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2007-9-6
收藏
得分:0 

顶一下!


命运在我手中
2007-10-16 23:46
快速回复:[求助]快速排序出错在什么地方了?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012270 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved