快速排序的疑问

fx397993401 2010-07-30 10:48:24


# include<iostream>

void swap(int *a,int *b)//注意要传地址
{
int tmp = 0;
tmp = *a;
*a = *b;
*b = tmp;
}
int partition(int data[],int start,int end )//最后是 i到 j-1 的都是小于 data[end] 用这个函数没错
{
int i ,j = -1;
//data[0] = 1000;
if(start < end)
{
for(j = start,i = start;i < end; i ++)
{
if(data[i]<data[end])
{
swap(&data[i],&data[j]);
j++;
}
}
swap(&data[end],&data[j]);
}
return j;
}
int partition1(int data[],int start,int end )//最后是 i到 j-1 的都是小于 这个会有错 why
{
int i ,j = -1;
//data[0] = 1000;
if(start < end)
{
for(j = start+1,i = start+1;i <= end; i ++)
{
if(data[i]<data[start])
{
swap(&data[i],&data[j]);
j++;
}
}
swap(&data[start],&data[j]);
}
return j;
}
void quicksort(int data[],int start,int end)
{
int mid = 0;
if(start< end)
{
mid = partition1(data,start,end);
quicksort(data,start,mid-1);
quicksort(data,mid+1,end);

}
}

void printf(int data[])
{
int len = 10,i ;
for(i = 0;i < len ; i ++)
printf("%d ",data[i]);
}
int main()
{
int data[10] = {10,-232,43422,5,632,72,3,55,12,132};
quicksort(data,0,9);
printf(data);
return 0;
}

...全文
165 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
baifudage 2010-08-03
  • 打赏
  • 举报
回复
是啊 这才是正真的程序码啊 。。。。。。
fx397993401 2010-07-31
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 michael122 的回复:]

C/C++ code

int partition1(int data[],int start,int end )//最后是 i到 j-1 的都是小于 这个会有错 why
{
int i ,j = -1;
//data[0] = 1000;
if(start < end)
{
for(j = st……
[/Quote]

看来我学东西都是学的是皮毛啊
SuperFC 2010-07-30
  • 打赏
  • 举报
回复
1楼正确
michael122 2010-07-30
  • 打赏
  • 举报
回复

int partition1(int data[],int start,int end )//最后是 i到 j-1 的都是小于 这个会有错 why
{
int i ,j = -1;
//data[0] = 1000;
if(start < end)
{
for(j = start+1,i = start+1;i <= end; i ++)
{
if(data[i]<data[start])
{
swap(&data[i],&data[j]);
j++;
}
}
j--; //少了这句,不减的话j是指向第一个大于start元素的,应该指向最后一个小于start的
swap(&data[start],&data[j]);
}
return j;
}

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧