| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 469 人关注过本帖
标题:[讨论]快速排序
收藏  订阅  推荐  打印 
mikewolf
Rank: 2
等级:注册会员
帖子:175
积分:1900
注册:2004-7-3
[讨论]快速排序

/*快速排序之初探*/ #include <stdio.h> #include <conio.h> int main(void) { void quick_sort(int [],int); int i; static int a[10]={1,5,3,6,4,7,2,9,8,10};

quick_sort(a,10); printf("After quick_sort:\n"); for(i = 0;i < 10;i++) { printf("a[%d]=%d\n",i,a[i]); } getch(); return 0; }

void quick_sort(int v[],int n) { void qs(int [],int,int);

qs(v,0,n-1); }

void qs(int v[],int left,int right) { int i; int j; int x; int temp;

i = left; j = right; x = v[(left+right)/2];

while(i < j) { while((v[i] < x) && (i < right)) { i++; } while((v[j] > x) &&(j > left)) { j--; } if(i <= j) { temp = v[i]; v[i] = v[j]; v[j] = temp; i++; j--; } } if(i < right) { qs(v,i,right); } if(j > left) { qs((v+left),left,j); } }

/**************************************************************

假如给定十个数,1,2,3,4,5,6,7,8,9,10。

求使得快速排序取得最坏时间复杂度的排列。

****************************************************************/

2004-9-9 16:30
空前
Rank: 6Rank: 6
等级:金牌会员
帖子:1145
积分:11600
注册:2004-5-11

不知道你想说什么?


2004-9-10 05:31
天使预备役
Rank: 4
等级:高级会员
威望:3
帖子:669
积分:6804
注册:2004-4-6

这是在教你算法问题,很厉害的,

不过我算法太差理解不上去,努力!!


我 :“日本人也算人?” 上帝:“算,算,算吧。”。 我 :“这不是你的真心话。” 我 :“失手造批禽兽出来也就算了,但也不能把它们紧挨着咱中国人放啊!” 上帝:“你们中国人自己死好面子讲什么仁义,早点踏平过去,不早没事了。” 我 :。。。
2004-9-10 09:56
空前
Rank: 6Rank: 6
等级:金牌会员
帖子:1145
积分:11600
注册:2004-5-11

楼上的大哥提醒了一下,

看懂了一点,感觉太深奥,

这种方法很节约时间吗?

比选择,和冒泡都快吗?


2004-9-11 15:40
天使预备役
Rank: 4
等级:高级会员
威望:3
帖子:669
积分:6804
注册:2004-4-6

各个算法都有他的好处,不是对什么问题都一样的!!!

我 :“日本人也算人?” 上帝:“算,算,算吧。”。 我 :“这不是你的真心话。” 我 :“失手造批禽兽出来也就算了,但也不能把它们紧挨着咱中国人放啊!” 上帝:“你们中国人自己死好面子讲什么仁义,早点踏平过去,不早没事了。” 我 :。。。
2004-9-11 16:30
空前
Rank: 6Rank: 6
等级:金牌会员
帖子:1145
积分:11600
注册:2004-5-11


2004-9-11 16:45
空前
Rank: 6Rank: 6
等级:金牌会员
帖子:1145
积分:11600
注册:2004-5-11

看看这个怎么样:

#include<stdio.h> main() {void DB_sort(int [],int n); int i,a[10]; printf("Input 10 numbers:\n"); for(i=0;i<10;i++) scanf("%d",&a[i]); for(i=0;i<10;i++) printf("a[%d]=%d\t",i,a[i]); printf("\n"); DB_sort(a,10); printf("After sort:\n"); for(i=0;i<10;i++) printf("a[%d]=%d\t",i,a[i]); printf("\n"); getch(); } void DB_sort(int a[],int n) {int i=0,j=n-1,t,flag,k; while(i<j) {flag=0; for(k=i;k<j;k++) if(a[k]>a[k+1]) {t=a[k];a[k]=a[k+1];a[k+1]=t;flag=1;} if(!flag) return; j--; flag=0; for(k=j;k>i;k--) if(a[k]<a[k-1]) {t=a[k];a[k]=a[k-1];a[k-1]=t;flag=1;} if(!flag) return; i++; } }

[此贴子已经被作者于2004-09-12 13:49:53编辑过]


2004-9-12 13:42
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.050509 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved