问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

C语言算法结构

发布网友 发布时间:2022-04-30 18:38

我来回答

1个回答

热心网友 时间:2022-06-30 00:55

刚做完的
#include <iostream>
using namespace std;

void BiInsertsort(int r[], int n) //插入排序(折半)
{
for(int i=2;i<=n;i++)
{
if (r[i]<r[i-1])
{
r[0] = r[i]; //设置哨兵
int low=1,high=i-1; //折半查找
while (low<=high)
{
int mid=(low+high)/2;
if (r[0]<r[mid]) high=mid-1;
else low = mid+1;
}
int j;
for (j=i-1;j>high;j--) r[j+1] = r[j]; //后移
r[j+1] = r[0];
}
}
for(int k=1;k<=n;k++) cout<<r[k]<<" ";
cout<<"\n";
}

void ShellSort ( int r[], int n) //希尔排序
{
for(int d=n/2;d>=1;d=d/2) //以d为增量进行直接插入排序
{
for (int i=d+1;i<=n;i++)
{
r[0] = r[i]; //暂存被插入记录
int j;
for( j=i-d; j>0 && r[0]<r[j]; j=j-d) r[j+d] = r[j]; //记录后移d个位置
r[j+d] = r[0];

}
}
for(int i=1;i<=n;i++) cout<<r[i]<<" ";
cout<<"\n";
}

void BubbleSort(int r[], int n) //起泡排序
{
int temp,exchange,bound;
exchange=n; //第一趟起泡排序的范围是r[0]到r[n-1]
while (exchange) //仅当上一趟排序有记录交换才进行本趟排序
{
bound=exchange;
exchange=0;
for (int j=1; j<bound; j++) //一趟起泡排序
if (r[j]>r[j+1])
{
temp=r[j];
r[j]=r[j+1];
r[j+1]=temp;
exchange=j; //记录每一次发生记录交换的位置
}
}
for(int i=1;i<=n;i++) cout<<r[i]<<" ";
cout<<"\n";
}

int Partition(int r[], int first, int end) //快速排序一次划分
{
int i=first; //初始化
int j=end;
r[0]=r[first];
while (i<j)
{
while (i<j && r[0]<= r[j]) j--; //右侧扫描
r[i]=r[j];
while (i<j && r[i]<= r[0]) i++; //左侧扫描
r[j]=r[i];
}
r[i]=r[0];
return i; //i为轴值记录的最终位置
}
void QuickSort(int r[], int first, int end) //快速排序
{
if (first<end)
{ //递归结束
int pivot=Partition(r, first, end); //一次划分
QuickSort(r, first, pivot-1);//递归地对左侧子序列进行快速排序
QuickSort(r, pivot+1, end); //递归地对右侧子序列进行快速排序
}
}

void SelectSort(int r[ ], int n) //简单选择排序
{
int i,j,index,temp;
for (i=1; i<n; i++) //对n个记录进行n-1趟简单选择排序
{
index=i;
for (j=i+1; j<=n; j++) //在无序区中选取最小记录
if (r[j]<r[index]) index=j;
if (index!=i)
{
temp=r[i];
r[i]=r[index];
r[index]=temp;
}
}
for(i=1;i<=n;i++) cout<<r[i]<<" ";
cout<<"\n";
}

void main()
{
const int numv=12;
int a[3][numv]={{0,6,13,19,23,37,39,41,45,48,58,86},{0,86,58,48,45,41,39,37,23,19,13,6},{0,23,13,48,86,19,6,41,58,37,45,39}};
int z1[numv],z2[numv];
int m,n;
cout<<"请选择测试数据类型:⑴正序 ⑵逆序 ⑶随机 [ 若跳出,请按⑷ ]" <<endl;
cin>>m;
while(m>0&&m<4)
{
cout<<"请选择排序算法:⑴直接插入排序 ⑵希尔排序 ⑶冒泡排序 ⑷快速排序 \n ⑸简单选择排序"<<endl;
cin>>n;
switch(n)
{
case 1:
cout << "直接插入排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n直接插入排序结果为:" << "\n";
BiInsertsort(a[m-1],numv-1);
break;
case 2:
cout << "\n希尔排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n希尔排序结果为:" << "\n";
ShellSort(a[m-1], numv-1);
break;
case 3:
cout << "\n冒泡排序前:" << "\n";
for(int k=1;k<numv;k++) cout<<a[m-1][k]<<" ";
cout << "\n冒泡排序结果为:" << "\n";
BubbleSort(a[m-1], numv-1);
break;
case 4:
cout << "\n快速排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n快速排序结果为:" << "\n";
QuickSort(a[m-1],0,numv-1);
for(int i=1;i<numv;i++)
cout<<a[m-1][i]<<" ";
cout<<"\n";
break;
case 5:
cout << "\n简单选择排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n简单选择排序结果为:" << "\n";
SelectSort(a[m-1],numv-1);
break;

default:
cout<<"输入错误!"<<endl;
}
m=0;
cout<<"请选择测试数据类型:⑴正序 ⑵逆序 ⑶随机 [ 若跳出,请按⑷ ]" <<endl;
cin>>m;
}
if(m==4) cout<<"(*^__^*) 再见!"<<endl;
else cout<<"输入错误!"<<endl;
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
男生一般在15岁青春期心情不好大多是什么造成的 我今年15岁男生为什么会经常做那些难以启齿的梦? 男生的青春期是几之几岁?我今天十四岁半,是青春期吗? 怎么看别人加密的qq空间相册内容单独删除相册里的人聊天记录方法 win11怎么退出微软账户-windows11微软账户退出教程 windows11微软账户怎么退出 windows11退出微软账户教程 windows11怎么退出账号登录 windows11退出账号登录教程 高尔夫雾灯怎么打开? 新车上牌照流程 新车自己怎么上牌照 新车上牌的流程有哪些 为什么苹果下载不了泰剧兔 常用的C语言算法有哪些? 苹果手机怎么下载泰萌主? 电视总是闪屏怎么回事? 电视画面闪屏怎么办 北京的北四环附近有什么不错的小吃 我住的附近有什么特色小吃吗 北京大学附近有哪些有特色的小吃店? 周末去湖南大学找朋友玩,那附近哪些小吃是一定要吃的? 广德开发区有凉席加工厂吗? 有关朱自清生平的简介 天庭4个天门分别是谁守? &quot;朱自清&quot;的简单介绍。 南天门是第几重天,为什么各路神仙不走别的门只走南天门? 简介朱自清及他的作品 神话传说南天门悬吊的什么 你好我想问下我刚买的手机直播声卡,怎么唱起歌来和伴奏不在一个调上面是怎么回事呢 《西游记》中经常提到的就是南天门,难道去天庭没有别的天门吗? 朱自清的生平主要经历 南天门是什么神仙居住 泰萌主为什么要iPhone受信任? 泰萌主激活不了 跪求俄剧叶卡捷琳娜二世,第一季全集,最好高清,一定要有字幕,英文字幕也可以!!_百度问一问 买彩票,怎么才能不输钱,光赚钱呀? 怎样买彩票才能赚钱? 怎么买彩票才稳赚,哪怕一天赚10元也好 怎样买福彩才能稳赚不输? 玩彩票怎么赚钱? 买彩票怎样才能赚钱?? 彩票代售点一般怎么赚钱? 买彩票有没有什么好的方法?? 当前彩票有什么好的赚钱方法》? 怎样买彩票才会稳赚? 我想买彩票.彩票能稳定挣钱吗? 电视机按键锁住了,没有遥控器要怎么解锁?大脑袋,电视没有遥控器,打开电视,屏幕上出现一个小锁的标志_百度问一问 碗菜的做法图解凉菜 怎么注册R商标,个人如何注册商标 浦发万用金都要消费凭证吗 申请R商标难不难?需要什么资料? 浦发信用卡万用金要提供使用证明吗
  • 焦点

最新推荐

猜你喜欢

热门推荐