标题:关于快速排序的源程序
只看楼主
luoxian_2003
Rank: 1
等 级:新手上路
威 望:2
帖 子:163
专家分:0
注 册:2006-2-22
 问题点数:0 回复次数:5 
关于快速排序的源程序

#include "stdafx.h"
#include <iostream.h>

void quicksort(int data[],int low,int high)
{
int i,pivot,j;
if(low<high)
{
pivot=data[low]; i=low, j=high;
while(i<j)
{
while(i<j &&data[j]>=pivot) j--;
if(i<j) data[i++]=data[j];
while(i<j&&data[i]<=pivot) i++;
if(i<j)data[j--]=data[i];
}
data[i]=pivot;
quicksort(data,low,i-1); /*递归调用*/
quicksort(data,i+1,high);
}/*if*/
}/*quicksort*/

int main(int argc, char* argv[])
{
int a[10];
cout<<"请输入要排序的数列:"<<endl;
for(int i=0;i<10;i++)
cin>>a[i];
quicksort(a,0,9);
cout<<"排序后的结果是:"<<endl;
for(int j=0;j<10;j++)
cout<<a[j]<<" ";
cout<<endl;

return 0;
}
第一次发帖 ,小弟还不适应,有请高手多多指教了

搜索更多相关主题的帖子: 快速 include 源程序 
2006-04-12 16:30
xupeng
Rank: 1
等 级:新手上路
帖 子:4049
专家分:0
注 册:2006-2-12
得分:0 
以下是引用luoxian_2003在2006-4-12 16:30:00的发言:

#include "stdafx.h"
#include <iostream.h>

void quicksort(int data[],int low,int high)
{
int i,pivot,j;
if(low<high)
{
pivot=data[low]; i=low, j=high;
while(i<j)
{
while(i<j &&data[j]>=pivot) j--;
if(i<j) data[i++]=data[j];///////////////////应该用交换吧.怎么能是付值呢?
while(i<j&&data[i]<=pivot) i++;
if(i<j)data[j--]=data[i];//////////////////////应该用交换吧.怎么能是付值呢?

}
data[i]=pivot;
quicksort(data,low,i-1); /*递归调用*/
quicksort(data,i+1,high);
}/*if*/
}/*quicksort*/

int main(int argc, char* argv[])
{
int a[10];
cout<<"请输入要排序的数列:"<<endl;
for(int i=0;i<10;i++)
cin>>a[i];
quicksort(a,0,9);
cout<<"排序后的结果是:"<<endl;
for(int j=0;j<10;j++)
cout<<a[j]<<" ";
cout<<endl;

return 0;
}
第一次发帖 ,小弟还不适应,有请高手多多指教了

你付给一个变量值,那它以前的值不就没有了吗?
不过偶实验了这个程序,还很正常!?不知道为什么?
哪位大侠指点指点呀!小弟多谢了啊!

[此贴子已经被作者于2006-4-19 9:50:09编辑过]


反清复明 http://xupeng.
2006-04-19 09:48
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
得分:0 
应该是第归调用吧!

2006-04-21 12:28
starrysky
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:华中科技大学EI -T0405
等 级:版主
威 望:11
帖 子:602
专家分:1
注 册:2005-9-12
得分:0 

这个程序是对的。其关键在下面这个函数

void quicksort(int data[],int low,int high)
{
int i,pivot,j;
if(low<high)
{
pivot=data[low]; //第一次付值
i=low, j=high;
while(i<j)
{
while(i<j &&data[j]>=pivot) j--;
if(i<j) data[i++]=data[j]; //data[i++]=data[j]这句等价于data[i]=data[j]; i++;在前面data[low]即data[i]的值已经付给了pivot,由pivot保存.
while(i<j&&data[i]<=pivot) i++;
if(i<j)data[j--]=data[i];//同理,这里data[j--]=data[i];等价于data[j]=data[i];j--;在上面if语句中,data[j]的值已经付给了data[i],由data[i]即data[low]来保存
}
data[i]=pivot;//再次付值
quicksort(data,low,i-1); /*递归调用*/
quicksort(data,i+1,high);
}/*if*/
}/*quicksort*/

//一共有4次付值,利用了pivot这个临时变量来进行传递


我的征途是星辰大海
2006-04-25 21:33
luoxian_2003
Rank: 1
等 级:新手上路
威 望:2
帖 子:163
专家分:0
注 册:2006-2-22
得分:0 
感谢大家的热情讨论,你们的参与是我最大的动力

天地有正气,凛烈万古存。
2006-05-22 19:40
nlf11119
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2006-3-1
得分:0 

个位高手帮帮忙帮我编个程序
0到9的的所有7位数排序,要求7位数不能有重复的数字出现

2006-05-23 08:29



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-57079-1-1.html




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

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