| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 427 人关注过本帖
标题:关于一个快速排序的问题
取消只看楼主 加入收藏
那个ID
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2015-3-13
结帖率:50%
收藏
已结贴  问题点数:18 回复次数:1 
关于一个快速排序的问题
# include <stdio.h>
# include <malloc.h>

void Quicksort(int * a, int low, int high);
int FindPos(int * a, int loe, int high);

int main()
{
    int i;
    int len;
    int *a;

    printf("输入需要排序的个数:");
    scanf("%d",&len);
    a = (int *)malloc(sizeof(int)*len);
     for (i = 0; i < len; i++)
     {
       scanf("%d",&a[i]);
     }
    Quicksort(a , 0, len-1);/* 0 表示第一个元素的下标, len-1 表示最后一个元素的下标*/

    for (i = 0; i < len; i++)
        printf("%d ", a[i]);
    puts("\n");


    return 0;
}

void Quicksort(int * a, int low, int high)
{
    int pos;
    if (low < high)
    {
        pos = FindPos(a, low, high);
        Quicksort(a, low, pos-1);
        Quicksort(a, pos+1, high);
    }
}

int FindPos(int * a, int low, int high)
{
    int val = a[low];

    while (low < high)
    {
        while (low < high && a[high] >= val)
            --high;
        a[low] = a[high];

        while (low < high && a[high] <= val)
          low++;
        a[high] = a[low];
    }/*终止 while 循环之后, low 和 high 是相等的*/

    a[low] = val;
    return high; /* high 可以改成 low, 但不能改成 val, a[low], a[high]*/
}
图片附件: 游客没有浏览图片的权限,请 登录注册



求大神帮助下
搜索更多相关主题的帖子: 元素 include 
2015-05-17 21:57
那个ID
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2015-3-13
收藏
得分:0 
谢谢帮助
2015-05-19 21:10
快速回复:关于一个快速排序的问题
数据加载中...
 
   



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

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