| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1710 人关注过本帖
标题:不用递归写快速排序的函数!!
取消只看楼主 加入收藏
lxh8810
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-3
收藏
 问题点数:0 回复次数:4 
不用递归写快速排序的函数!!
如题;麻烦哪位大哥写一下
搜索更多相关主题的帖子: 递归 函数 
2008-12-03 16:48
lxh8810
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-3
收藏
得分:0 
我是说快速排序算法
不是说要快速地排序
2008-12-03 17:40
lxh8810
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-3
收藏
得分:0 
  void quicksort(int a[],int s,int t)
  {
  int i=s,j=t,temp;
  if(s<t)
  {
  temp=a[s];
  while(i!=j)
  {
  while(j>i&&a[j]>=temp)
  j--;
  a=a[j];
  while(i<j&&a<=temp)
  i++;
  a[j]=a;
  }
  a=temp;
  quicksort(a,s,i-1);
  quicksort(a,i+1,t);
  }
  }
2008-12-04 12:40
lxh8810
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-3
收藏
得分:0 
LS的不用递归写一下
2008-12-04 12:41
lxh8810
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-3
收藏
得分:0 
  #include <stdio.h>
  int arr[] = {14,10,11,5,6,15,0,15,16,14,0,8,17,15,7,19,17,1,18,7};
  /* swap函数:交换v[k]与v[j]的值 */
  inline void swap(int v[], int k, int j)
  {
  int temp;
  temp = v[k];
  v[k] = v[j];
  v[j] = temp;
  }
  void qsort(int v[], int left, int right)
  {
  int j, last;
  if (left >= right) /* 若数组包含的元素个数少于两个 */
  return; /* 则不执行任何操作 */
  swap(v, left, (left + right)/2); /* 将划分子集的元素移动到V[0] */
  last=left; /* 用last记录中比关键字小间的最右位置*/
  for (j = left+1; j <= right; j++) /* 划分子集 */
  {
  if (v[j] < v[left])
  {
  swap(v, ++last, j);
  }
  }
  /*通过上述过程会形成 关键字(中left所在位置) 小小小...(last所在位置)大大大大(最后)*/
  swap(v, left, last); /* 恢复划分的元素 */
  /*小小。。。。关键字大大大大*/
  qsort(v, left, last-1);
  qsort(v, last+1, right);
  }
  void main()
  {
  int j;
  qsort(arr, 0, 19);
  for(j=0; j<=19; j++)
  {
  printf("%d ", arr[j]);
  }
  printf("\n");
  }
2008-12-04 12:43
快速回复:不用递归写快速排序的函数!!
数据加载中...
 
   



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

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