| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2427 人关注过本帖
标题:七种排序算法
只看楼主 加入收藏
激情依旧
Rank: 1
等 级:新手上路
威 望:2
帖 子:524
专家分:0
注 册:2005-4-4
收藏
 问题点数:0 回复次数:26 
七种排序算法

堆排序 #include<stdio.h> void CreatHeap(int a[],int n,int h) { int i,j,flag,temp; i=h; j=2*i+1; temp=a[i]; flag=0; while(j<n && flag!=1) { if(j<n-1 && a[j]<a[j+1]) j++; if(temp>a[j]) flag=1; else { a[i]=a[j]; i=j; j=2*i+1; } } a[i]=temp; } void InitCreatHeap(int a[],int n) { int i; for(i=(n-1)/2;i>=0;i--) CreatHeap(a,n,i); } void HeapSort(int a[],int n) { int i,temp; InitCreatHeap(a,n); for(i=n-1;i>0;i--) { temp=a[0]; a[0]=a[i]; a[i]=temp; CreatHeap(a,i,0); }

} main() { int n,i,a[100]; printf("请问你要输入几个排序数:\n"); scanf("%d",&n); printf("请输入你要排序的数值:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); HeapSort(a,n); printf("排序后的:\n"); for(i=0;i<n;i++) printf("%d\t",a[i]); } ------------------------------------------------------------- 对半排序 #include<stdio.h> main() { int i,j,temp, low,high,mid,a[100],n; printf("请问你要输入几个数字:\n"); scanf("%d",&n); printf("请输入数字:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=1;i<n;i++) { temp=a[i]; low=0; high=i-1; while(high>=low) { mid=(low+high)/2; if(temp<a[mid]) high=mid-1; else low=mid+1; } for(j=i-1;j>=low;j--) a[j+1]=a[j]; a[low]=temp; } printf("排序后的:\n"); for(i=0;i<n;i++) printf("%d\t",a[i]); } --------------------------------------------- 快速排序 #include<stdio.h> void QuickSort(int a[],int low,int high){ int i=low,j=high; int temp=a[low]; while(i<j) { while(j>i&&temp<=a[j]) j--; if(j>i) { a[i]=a[j]; i++; } while(j>i&&a[i]<temp) i++; if(j>i) { a[j]=a[i]; j--; } } a[i]=temp; if(low<i) QuickSort(a,low,i-1); if(i<high)QuickSort(a,j+1,high); } main() { int a[100]; int high ,low,i,n; printf("请问你要输入几个数字:\n"); scanf("%d",&n); printf("请输入数字:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); low=0; high=n-1; QuickSort(a,low,high); printf("排序后的:\n"); for( i=0;i<n;i++) printf("%d\t",a[i]); } -------------------------------------- 冒泡 #include<stdio.h> main() {int i,j,temp,n,a[100],flag=1; printf("请问你要输入几个排序数:\n"); scanf("%d",&n); printf("请输入你要排序的数值:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n&&flag==1;i++) { flag=0; for(j=1;j<n-i;j++) if(a[j]<a[j-1]) { flag=1; temp=a[j-1]; a[j-1]=a[j]; a[j]=temp; } } printf("排序后的:\n"); for(i=0;i<n;i++) printf("%d\t",a[i]); } --------------------------------------------------------- 希尔 #include<stdio.h> void ShellSort(int a[],int n,int d[],int numOfD) { int i,j,k,m,span,temp; for(m=0;m<=numOfD;m++) { span=d[m]; for(k=0;k<span;k++) { for(i=k;i<n-span;i=i+span) { temp=a[i+span]; j=i; while(j>-1&&temp<=a[j]) { a[j+span]=a[j]; j=j-span; } a[j+span]=temp; } } }

} main() {int a[100], b[10],n,i,k,j; printf("请问你要输入几个数字:\n"); scanf("%d",&n); printf("请输入数字:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); j=n; k=0; do{ j=j/2; b[k]=j; k++; }while(j>0); ShellSort(a,n,b,k); printf("排序后的:\n"); for(i=0;i<n;i++) printf("%d\t",a[i]); } --------------------------------------------- 选择排序 #include<stdio.h> main() {int a[100], min,i,k,temp,j,cout; printf("请问你要输入几个数字(不要超过100个!!):\n"); scanf("%d",&cout); printf("请输入数字:\n"); for(i=0;i<cout;i++) scanf("%d",&a[i]); for(i=0;i<cout;i++) { min=i; for(k=i+1;k<cout;k++) { if(a[min]>a[k]) { min=k; } }if(i!=min) { temp=a[i]; a[i]=a[min]; a[min]=temp; } } for(j=0;j<cout;j++) printf("%d\t",a[j]); } ------------------------------------------ 直接插入 #include<stdio.h> main() { int i,j,n,temp,a[100]; printf("请问你要输入几个数字:\n"); scanf("%d",&n); printf("请输入数字:\n"); for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n-1;i++) { j=i; temp=a[i+1]; while(temp<a[j]&&j>-1) { a[j+1]=a[j]; j--; } a[j+1]=temp; } printf("排序后的:\n"); for(i=0;i<n;i++) printf("%d\t",a[i]); } 还有个二路归并排序我不会.我过下就热情发上来给大家 我在数据结构论坛发了这7种排序。但是那边我全部附有抓图的.如果想去看看结果的.就去那边看看好了。 坚强依然!永不言苦!永不言败!睇透数据结构!编程编程再编程!-----------激情依旧

(我发的群就要满人了。如果加不进来的朋友我只能say sorry)
搜索更多相关主题的帖子: int 算法 temp flag void 
2005-04-14 07:50
LastHeaven
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-4-8
收藏
得分:0 
我狂力支持你啊~!~!~! 我的名字叫做JEN~!~!~!
虽然现阶段的我还看不懂~!!~~! 一样一样啊

您所拨打的用户正在革命中。。。请您稍候再拨。。。 坚强依然!永不言苦!永不言败!睇透基础C语言先!—— 编程编程再编程! 嘎嘎
2005-04-14 11:33
Murray
Rank: 1
等 级:新手上路
帖 子:101
专家分:0
注 册:2005-4-10
收藏
得分:0 
呵呵,我才做过一种方法

2005-04-15 11:16
zhtmark
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2005-3-25
收藏
得分:0 
你是个有心人,不错.

[ 本帖最后由 zhtmark 于 2013-3-13 22:33 编辑 ]

zhtmark QQ:451361060
2005-04-15 12:09
weizheng
Rank: 1
等 级:新手上路
威 望:2
帖 子:286
专家分:0
注 册:2005-4-21
收藏
得分:0 
看不懂啊! 不过还是很有帮助的。

温和如玉,完美纯正。
2005-04-21 15:27
lycnsc
Rank: 1
等 级:新手上路
帖 子:243
专家分:0
注 册:2005-3-27
收藏
得分:0 
不错!好贴!
2005-04-21 15:43
allanhck
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2005-4-19
收藏
得分:0 
好东西!COPY下来收集资料了!谢谢楼主!

我爱上帝胜过上帝爱我,因为上帝不爱我,所以我只需要爱他一点点我就胜过他了!
2005-04-21 16:52
乌鸦丘比特
Rank: 1
等 级:新手上路
威 望:2
帖 子:625
专家分:0
注 册:2004-7-19
收藏
得分:0 
还差基数排序

我喜欢创造,一只扑腾着翅膀向天空飞翔的乌鸦
2005-04-21 17:00
aczhe
Rank: 1
等 级:新手上路
帖 子:90
专家分:0
注 册:2004-12-23
收藏
得分:0 
不错

君子敬其在己者,而不慕其在天者,是已日进也。
2005-04-21 20:15
毒药
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2005-4-11
收藏
得分:0 
希望大家踊跃把自己认为最好的数据结构和算法上贴,相互促进学习!

孤独一辈子!
2005-04-21 20:40
快速回复:七种排序算法
数据加载中...
 
   



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

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