社区
C语言
帖子详情
<排序>放分100!!人人有份!!
oliver88888888
2004-07-07 07:43:39
1.给出各排序的代码(从C语言和数据结构两方面入手)
2.比较各排序的时间复杂度,优劣性能等
<排序>
a插入排序:
直接插入排序
希尔排序
b交换排序:
起泡排序
快速排序
c选择排序:
...全文
193
16
打赏
收藏
<排序>放分100!!人人有份!!
1.给出各排序的代码(从C语言和数据结构两方面入手) 2.比较各排序的时间复杂度,优劣性能等 a插入排序: 直接插入排序 希尔排序 b交换排序: 起泡排序 快速排序 c选择排序:
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
weekly123
2004-07-08
打赏
举报
回复
up
snowegale888
2004-07-08
打赏
举报
回复
up
sanyou98
2004-07-08
打赏
举报
回复
up
lyz0418
2004-07-08
打赏
举报
回复
//数据以从小到大顺序排列
#include<iostream.h>
#include<stdlib.h>
#include<malloc.h>
typedef int KeyType;
#define MAXSIZE 100
#define MAXNUM 12
#define OK 1
struct RedType{
KeyType key;
//int otherinfo;
};
struct SqList{
RedType r[MAXSIZE+1];
int length;
};
//定义结构体
void Enter_List(SqList &L){
int test,i=1,n;
cout<<"输入数据元素的个数(n):"<<endl;
cin>>n;
cout<<"输入数据元素(data):"<<endl;
while(n){
cin>>test;
L.r[i].key=test;
i++;
L.length++;
n--;
}
}
//输入未排序序列
KeyType LT(KeyType s1,KeyType s2){
if(s1>=s2)
return 0;
else
return 1;
}
//比较s1、s2大小
void Print(SqList L){
cout<<"排好序的序列为:"<<endl;
int n=L.length;
for(int i=1;i<=n;i++)
cout<<L.r[i].key<<'\t';
cout<<endl<<endl;
}
//输出排好序的序列(通过检查序列是否为升序判断程序运行成功与否)
void Print_time(int time){
cout<<"程序的时间复杂度为:\t"<<time<<endl<<endl;
}
//各种排序方法:
KeyType BallSort(SqList &L){
int text=0,time=0,t=0;
for(int i=2;i<=L.length;i++){
text=i-1;
for(int j=i;j<=L.length;j++)
if(L.r[text].key>L.r[j].key){
text=j;
t=1;
time+=2;
}
if(t==1){
int t=0;
t=L.r[i-1].key;
L.r[i-1].key=L.r[text].key;
L.r[text].key=t;
time+=3;
}
}
return time;
}
//起泡排序
/*
KeyType InsertSort(SqList &L){
int time=0;
for(int i=2;i<=L.length;i++)
if(LT(L.r[i].key,L.r[i-1].key)){
L.r[0]=L.r[i];
L.r[i]=L.r[i-1];
for(int j=i-2;LT(L.r[0].key,L.r[j].key);--j){
L.r[j+1]=L.r[j];
time++;
}
L.r[j+1]=L.r[0];
time+=3;
}
return time;
}
//插入排序
KeyType BInsertSort(SqList &L){
int time=0;
for(int i=2;i<=L.length;i++){
L.r[0]=L.r[i];
int low,high;
low=1;
high=i-1;
while(low<=high){
int m=(low+high)/2;
if(LT(L.r[0].key,L.r[m].key))
high=m-1;
else
low=m+1;
time++;
}
for(int j=i-1;j>=high+1;--j){
L.r[j+1]=L.r[j];
time++;
}
L.r[high+1]=L.r[0];
}
return time;
}
//折半插入排序
KeyType ShellInsert(SqList &L,int dk){
int time=0;
for(int i=dk+1;i<=L.length;++i)
if(LT(L.r[i].key,L.r[i-dk].key)){
L.r[0]=L.r[i];
for(int j=i-dk;j>0&<(L.r[0].key,L.r[j].key);j-=dk){
L.r[j+dk]=L.r[j];
time++;
}
L.r[j+dk]=L.r[0];
}
return time;
}
KeyType ShellSort(SqList &L,int dlta[],int t){
int time=0;
for(int k=0;k<t;k++)
time+=ShellInsert(L,dlta[k]);
return time;
}
//希尔排序
KeyType Partition(SqList &L,int low,int high,int &time){
RedType s;
int pivotkey;
pivotkey=L.r[low].key;
while(low<high){
while(low<high&&L.r[high].key>=pivotkey){
--high;
time++;
}
s=L.r[low];
L.r[low]=L.r[high];
L.r[high]=s;
while(low<high&&L.r[low].key<=pivotkey){
++low;
time++;
}
s=L.r[low];
L.r[low]=L.r[high];
L.r[high]=s;
time+=6;
}
return low;
}
int time=0;
KeyType Qsort(SqList &L,int low,int high){
int pivotkey;
if(low<high){
pivotkey=Partition(L,low,high,time);
Qsort(L,low,pivotkey-1);
Qsort(L,pivotkey+1,high);
}
return time;
}
KeyType QuickSort(SqList &L){
int time=0;
time=Qsort(L,1,L.length);
return time;
}
//快速排序
KeyType SelectMinKey(SqList &L,int i,int &time){
int s,t;
s=L.r[i].key;
t=i;
for(int j=i+1;j<=L.length;j++)
if(s>L.r[j].key){
s=L.r[j].key;
t=j;
time+=2;
}
return t;
}
KeyType SelectSort(SqList &L){
int j,time=0;
RedType s;
for(int i=1;i<L.length;++i){
j=SelectMinKey(L,i,time);
if(i!=j){
s=L.r[i];
L.r[i]=L.r[j];
L.r[j]=s;
time+=3;
}
}
return time;
}
//简单选择排序
KeyType HeapAdjust(SqList &H,int s,int m,int &time){
RedType rc;
rc=H.r[s];
for(int j=2*s;j<=m;j*=2){
if(j<m&<(H.r[j].key,H.r[j+1].key))
++j;
if(!LT(rc.key,H.r[j].key))
break;
H.r[s]=H.r[j];
s=j;
time+=4;
}
H.r[s]=rc;
return OK;
}
KeyType HeapSort(SqList &H){
int time=0;
for(int i=H.length/2;i>0;--i)
HeapAdjust(H,i,H.length,time);
for(i=H.length;i>1;--i){
RedType rc;
rc=H.r[1];
H.r[1]=H.r[i];
H.r[i]=rc;
time+=3;
HeapAdjust(H,1,i-1,time);
}
return time;
}*/
//堆排序
void main(){
SqList L;
int time=0;
L.length=0;
Enter_List(L);
//time=InsertSort(L);
//插入排序
//time=BInsertSort(L);
//折半插入排序
/*int *dlta,n;
cout<<"输入增量序列数:"<<endl;
cin>>n;
dlta=(int *)malloc(n*sizeof(int));
cout<<"输入增量序列:"<<endl;
for(int i=0;i<n;i++)
cin>>dlta[i];
time=ShellSort(L,dlta,n);*/
//希尔排序
//time=QuickSort(L);
//快速排序
//time=SelectSort(L);
//简单选择排序
//time=HeapSort(L);
//堆排序
time=BallSort(L);
//其泡排序
Print(L);
Print_time(time);
}
821343
2004-07-08
打赏
举报
回复
书上都有呀,兄弟
cyy219
2004-07-08
打赏
举报
回复
倒分是什么意思?还有人闲分太多的呀?
goodname
2004-07-08
打赏
举报
回复
http://community.csdn.net/Expert/TopicView.asp?id=3149778
http://community.csdn.net/Expert/TopicView.asp?id=3153301
老大,倒分也过于明显了吧?
bujifeng
2004-07-08
打赏
举报
回复
接分先!!!
407
2004-07-08
打赏
举报
回复
顶
海上的云
2004-07-08
打赏
举报
回复
呵呵
顶吧
cnxiaohai
2004-07-07
打赏
举报
回复
是不是课程设计啊????
如果是课程设计
我可以教你
就是给你代码也没什么
如果是倒分
我可要举报“人渣”老大呢~~~~~~~~~~~~~~~~~~~~~~
antijpn
2004-07-07
打赏
举报
回复
http://community.csdn.net/Expert/topic/3114/3114475.xml?temp=.3919031
antijpn
2004-07-07
打赏
举报
回复
估计是倒分,此人已经有这样的记录了
dahan2005
2004-07-07
打赏
举报
回复
基本的东西也不自己写?
twfx7758
2004-07-07
打赏
举报
回复
等我在书上找到了告诉你啊!~~~~~~~~~~
an9ryfr09
2004-07-07
打赏
举报
回复
我就给你冒泡排序吧,(降序):
int a[10]={2,1,3,5,4,6,9,10,7,8};
int temp;
int i,j;
for(i=0;i<10;i++)
{
for(j=0;j<9;j++)
{
if(a[j]<a[i])
{temp = a[j];a[j] = a[i];a[i] = temp;}
}
}
for(i=0;i<10;i++)
printf("%d\n",a[i]);
楼下的继续吧...
<5>设计模式(基于C/C++实现)
当你有了一定的语言基础以后,对于软件的开发就要上升到设计阶段。 设计模式就是这样一门软件设计的课目。本课程,从设计查模式的原则开始讲起,然后讲解了软件设计中常用的单例模式,观察者模式,策略模式,代理...
微博上一些有用的话 >>>>转载他人的!
10、勇于接受份外之事. @阿里巴巴中国 : 【团队工作中人际关系原则】1、改变自己,影响他人。2、关心他人,胜过自己.3、团队利益,高于其它:4、宽以待人,严于律已:5、推崇忠诚,成为品德:6、沟通咨询,成为...
2020-12-22
关于redis和memcache的不同,下面罗列了一些相关说法,供记录: redis和memecache的不同在于[2]: 1、存储方式: cache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小 redis有部份存在硬盘上,...
seo相关文章
<br />SEO 网址:http://blog.myspace.cn/xmmei/category/41652.aspx<br /><br /><br /> 五个等级SEOer的特征分析<br /> 顶尖的SEOer:<br /><br /> 他们几乎不写博客、不回帖、不参与互联网的争论,每天专心...
Python 模块使用
值为 1-7 中的一个,1 为周一,2 为周二,以此类推 datetime.date.isocalendar():把日期对象返回一个带有年月日的元组 datetime.date.isoformat():将获取的当前日期转换为字符串 datetime.datetime(year, month, ...
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章