标题:大家再帮我看一下【快速排序】
只看楼主
tufei
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2004-7-5
 问题点数:0 回复次数:1 
大家再帮我看一下【快速排序】

#include<stdio.h> #include <stdlib.h> #include <time.h>

int quicksort(int a[], int s, int r); /*声明函数*/ void main() { int num[10]; int i,j; time_t t;

srand((unsigned) time(&t)); for(i=0; i<10; i++) { num[i]=rand(); printf("%5d ",num[i]); if(i%10==0) printf("\n"); } printf("\n"); quicksort(num, 0, 9); for(i=0; i<10; i++) /*输出排序后的结果*/ { printf("%5d ",num[i]); if(i%10==0) printf("\n"); } getch(); }

int quicksort(int a[], int s, int r) /*快速排序*/ { int i,j,pivot; i=s; j=r; pivot=a[s]; while (i<j) { while ((a[j] > pivot) && (i<j)) j = j - 1; a[i]=a[j]; while ((a[i] < pivot) && (i<j)) i = i + 1; a[j]=a[i];

} a[i] = pivot;

if(s<(i-1)) quicksort(a, s, i-1); if(r<(i+1)) quicksort(a, i+1, r); getch(); }

我运行的结果怎么不对?结果只排出了最小值的数组,我怎么感觉是起泡排序的结果啊?比如说随机产生10个数:192 385 485 27 472 48 308 4892 34 4566

结果显示27 192 385 485 472 48 308 4892 34 4566

我就不明白怎么会是这个结果呢?帮帮忙。

还有如何返回数组啊?

搜索更多相关主题的帖子: include 
2004-07-06 22:52
jzh2004
Rank: 1
等 级:新手上路
帖 子:341
专家分:0
注 册:2004-4-30
得分:0 

这个你可以看一下数据结构书中有关快速排序的内容,你的程序中的快速排序有错误


我的主页 http://www.
2004-07-08 13:20



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-3195-1-1.html




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

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