| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1710 人关注过本帖
标题:不用递归写快速排序的函数!!
只看楼主 加入收藏
lxh8810
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-3
收藏
 问题点数:0 回复次数:10 
不用递归写快速排序的函数!!
如题;麻烦哪位大哥写一下
搜索更多相关主题的帖子: 递归 函数 
2008-12-03 16:48
cyz7929
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2008-10-26
收藏
得分:0 
指针  选择法
2008-12-03 17:11
cyz7929
Rank: 1
等 级:新手上路
帖 子:63
专家分:0
注 册:2008-10-26
收藏
得分:0 
指针  选择法
2008-12-03 17:13
lxh8810
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2008-12-3
收藏
得分:0 
我是说快速排序算法
不是说要快速地排序
2008-12-03 17:40
sf469210604
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2008-9-26
收藏
得分:0 
LZ能说下用递归快速排序的算法吗?
我没看过...
2008-12-03 19:12
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
快排不用递归。
2008-12-03 22:48
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
广陵绝唱
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:29
帖 子:3607
专家分:1709
注 册:2008-2-15
收藏
得分:0 
回复 第8楼 lxh8810 的帖子
#include <stdio.h>
#include<stdlib.h>
#define N 10
int wap(const void *a,const void *b)
{
    return (*(int *)a-*(int *)b);
}
int main(void)
{
    int a[N];
    int *p;
    for(p=a;p<a+N;++p)
        scanf("%d",p);
    qsort(a,N,sizeof(a[0]),wap);
    for(p=a;p<a+N;++p)
        printf("%d ",*p);
    return 0;
}

/*-------------------------------------

    呵呵,我没用递归写吧?

    虽然有点投机取巧,但也算是逞了一回口舌之利吧。

--------------------------------------------*/
2008-12-05 02:04
快速回复:不用递归写快速排序的函数!!
数据加载中...
 
   



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

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