| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 820 人关注过本帖
标题:[讨论]快速排序
只看楼主 加入收藏
mikewolf
Rank: 1
等 级:新手上路
帖 子:175
专家分:0
注 册:2004-7-3
收藏
 问题点数:0 回复次数:6 
[讨论]快速排序

/*快速排序之初探*/ #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-09-09 16:30
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

不知道你想说什么?


2004-09-10 05:31
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 

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

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


差点把你忘了...
2004-09-10 09:56
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

楼上的大哥提醒了一下,

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

这种方法很节约时间吗?

比选择,和冒泡都快吗?


2004-09-11 15:40
天使预备役
Rank: 2
等 级:论坛游民
威 望:3
帖 子:670
专家分:10
注 册:2004-4-6
收藏
得分:0 
各个算法都有他的好处,不是对什么问题都一样的!!!

差点把你忘了...
2004-09-11 16:30
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

2004-09-11 16:45
空前
Rank: 1
等 级:新手上路
帖 子:1146
专家分:0
注 册:2004-5-11
收藏
得分:0 

看看这个怎么样:

#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-09-12 13:42
快速回复:[讨论]快速排序
数据加载中...
 
   



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

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