用循环写快速排序,谁能给点提示

ameba 2003-11-15 08:10:35
怎样用循环写
快速排序
...全文
131 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
scoutman 2003-12-01
  • 打赏
  • 举报
回复
好象还可以用bubble sort

mfcer2 2003-11-30
  • 打赏
  • 举报
回复
/*
* q_sort.c
*/

#include <stdio.h>

static void q_sort(int [], int, int);
static int patition(int [], int, int);
static void prt_array(const int [], const int);

int main(void)
{
int arr[] = { 2, 99, 10, 34, 0, 2, 1, 45 },
iSize = sizeof(arr) / sizeof(arr[0]);

prt_array(arr, iSize);
printf("\n--------------------------------------------\n");
q_sort(arr, 0, iSize - 1);
prt_array(arr, iSize);

return 0;
}

static void q_sort(int v[], int left, int right)
{
int iPos;

if (left >= right) return;
iPos = patition(v, left, right);
q_sort(v, left, iPos - 1); /* 左边划分 */
q_sort(v, iPos + 1, right); /* 右边划分 */
}

static int patition(int v[], int left, int right)
{
int x = v[left];

while (left < right)
{
while (left < right && x <= v[right])
right--;
v[left] = v[right];
while (left < right && x >= v[left])
left++;
v[right] = v[left];
}
v[left] = x;

return left;
}

static void prt_array(const int v[], const int iSize)
{
int i;

for (i = 0; i < iSize; i++)
printf((i + 1) % 5 ? "%d, " : "%d\n", v[i]);
}
aaalife 2003-11-25
  • 打赏
  • 举报
回复
更正:

while(a[++i].compareto(x)<0);
while(a[--i].compareto(x)>0);

比较大小
aaalife 2003-11-22
  • 打赏
  • 举报
回复
private static void quicksort(int p,int r)
{
if(p<r)
{
int q=partition(p,r);
quicksort(p,q-1);
quicksort(q+1,r);
}
}


private static int partion ( int p,int r)
{
int i=p , j=r+1;
comparable x=a[p];
//将>=x的元素交换到左边区域
//将<=x的元素交换到右边区域
while(true)
{
while(a[++i],compareto(x)<0);
while(a[--i],compareto(x)>0);
if (i>=j) break;
mymath.swap(a,i,j);
}
a[p]=a[j];
a[j]=x;
reture j;
}




ywqzxj 2003-11-17
  • 打赏
  • 举报
回复
vc中 ...\Microsoft Visual Studio\VC98\CRT\SRC\qsort.c
ameba 2003-11-17
  • 打赏
  • 举报
回复
不用栈行不行
zhouqingyuan 2003-11-16
  • 打赏
  • 举报
回复
用循环写?什么意思?不许用递归吗?
短歌如风 2003-11-16
  • 打赏
  • 举报
回复
标准快速有两个递归,其中一个是尾递归,可以直接转为循环;另一个无法处理,大概只能用栈结构模拟递归的方法用循环实现了。
asiaec 2003-11-15
  • 打赏
  • 举报
回复
用栈把每次quicksort的上届 下届存起来

33,008

社区成员

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

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