linux用冒泡排序程序,利用双向走动法改进冒泡排序算法C语言源代码[黑盟核心成员]...
传统的冒泡排序法是这样操作:从前往后,依次比较两个相邻的元素,如果逆序则交换这两个元素值,然后继续往后操作;到了数据尾部时,就找出了一个最大值(或最小值)。然后重复上面的操作n-1次(n为元素个数)。
相关的改进办法:按照上面的办法来操作的话,第一次扫描把最大数(或最小数)放到最后面的位置,第二次扫描时其实只需要扫描到倒数第二个位置就可以了,因为最后一个位置已经不需要判断了,以后的操作都是类似的。这样可以减小程序运行时间。
双向走动法(以升序排序为例):首先,从前往后扫描,如果相邻两个元素前面的比后面的大,则交换,继续往后;到尾部以后,再往回走,如果后面的元素比前面的小,则交换,继续往前走;到了头以后,再往后走。为了减少走动次数,我们用变量start表示头,用变量end表示尾。每找到一个剩余数据中的最大数,就让变量end减1,每找到一个剩余数据中的最小数,就让变量start加1。循环条件为start<=end。
代码如下:
#i nclude #i nclude
void maopao(int source[],int n)
{
int start=0,end=n-1;
int i;
while(start<=end)/*如果还有元素没有确定其位置*/
{
for(i=start;iif(source[i]>source[i+1])
{
int t;
t=source[i];
source[i]=source[i+1];
source[i+1]=t;
}
end--;/*找到最大数*/
for(i=end;i>start;i--)/*寻找剩余元素的最小元素*/
if(source[i]{
int t;
t=source[i];
source[i]=source[i-1];
source[i-1]=t;
}
start++;/*找到一个最小数*/
}
}
void output(int data[],int n)
{
int i;
for(i=0;i{
if(i%10==0)
printf("\n");
printf("%4d",data[i]);
}
}
int check(int data[],int n)
{/*检查结果数据是否已升序排列*/
int i;
for(i=0;iif(data[i]>data[i+1])
return 0;
return 1;
}
void main()
{
int data[500];
int i;
srand(time(NULL));
for(i=0;i<500;i++)
data[i]=random(500);
printf("\nThe original data is:\n");
output(data,500);
maopao(data,500);
printf("\nAfter sort:\n");
output(data,500);
printf("\n");
if(check(data,500)==1)
printf("\nRight.");
else
printf("\nWrong.");
}
linux用冒泡排序程序,利用双向走动法改进冒泡排序算法C语言源代码[黑盟核心成员]...相关推荐
- linux用冒泡排序程序,冒泡排序 Linux下c 实现
最近有个想法:工作之余,在linux下,用c/c++把常用的算法重写一遍.当然,对算法的认识,我仅限于皮毛,我不可能超越那些前辈先知,但我仍想,用自己的方式演示一遍,只当自娱自乐吧!秉承一贯的原则,不 ...
- c语言利用查表法画正弦波,嵌入式C语言查表法在项目中的应用
就像下面的这个表 之前写过上面这个标题的一篇文章,讲的是以位移的方式去遍历表中的数据,效率非常高,但是,如果要实现一个乱序的流水灯或者跑马灯的话,思考一个这样的算法是不可取的,很费时间,也很费脑力,于 ...
- 用matlab实现冒泡排序法,「冒泡排序算法」MATLAB实现冒泡排序算法 - seo实验室
冒泡排序算法 本文转载自头条文章原文章地址 1.bubble_sort.m function y=bubble_sort(x) x_len=length(x); for i=1:x_len-1 for ...
- python实现双向最大匹配法
python实现双向最大匹配法 CSDN小马哥 于 2019-01-08 21:01:29 发布 2776 收藏 3 文章标签: python 中文分词技术 双向最大匹配法 自然语言处理 版权 -- ...
- ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量
ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数.运输次数.三种不同的车型,预测需要花费的小时数)来预测一个自变量 输出结果 代码设计 from nu ...
- EL之Boosting之GB(DTR):利用梯度提升法解决回归(对多变量的数据集+实数值评分预测)问题
EL之Boosting之GB(DTR):利用梯度提升法解决回归(对多变量的数据集+实数值评分预测)问题 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 xList = [] labe ...
- C语言十个字母用冒泡法排序,冒泡排序法(C语言) - osc_wq8j2a9a的个人空间 - OSCHINA - 中文开源技术交流社区...
常用的排序方法有冒泡排序法,选择排序法,插入排序法以及希尔排序法等.本文着重讲解如何利用C代码,实现冒泡排序. 首先,要了解什么是冒泡排序.冒泡排序是常用的一种排序方法,其基本方法就是逐次比较.即一次 ...
- java实现rsa欧几里得算法求d_RSA算法中利用欧几里得算法求d详细过程
文章转自新浪博客@任家 正文: RSA是第一个也是使用的最广泛的公钥加密算法,在1978年由R.Rivest.AdiShamir和Adleman三人发明, 并以他们的名字命名.RSA算法的安全性基于大 ...
- 利用双向注意流进行机器理解
利用双向注意流进行机器理解 本文基于Bi-Directional Attention Flow For Machine Comprehension一文 1. 概述 Machine Comprehens ...
最新文章
- [笔记]C#基础入门(五)——算法:交换
- Machine Learning week 1 quiz: Linear Algebra
- vb.net2019-播放声音(wav、mp3等)
- migo获取header sap_Adjust Stock(MI06, MI07, MIGO)
- Android之添加固定图标到桌面
- 又一门国产数据库语言诞生了,比SQL还好用
- VMware vSphere Client下增加虚拟机磁盘空间的方法
- Excel VBA获取当文件下级子目录或目录中文件
- 怎么用python自动梳理表格_Python将多份excel表格整理成一份表格
- ​ [RHEL7.1]重新封装系统(制作模板)
- php sub pos,PHP pos()用法及代码示例
- Android7.1 Offload模式下的音频数据播放流程
- caffe教程笔记《Solver》
- 销毁Session和清空指定的属性
- FPGA入门——初学建议
- 中兴B860AV2.1U,联通版本,强刷固件线刷包
- 沁恒MCU串口使用指南
- SSH连接服务器断开
- 【转载】Windows 7下使用bcdedit删除多余启动项的命令
- Java 使用 JDBI 库访问MySQL 数据库
热门文章
- element ui 获取文件的路径_win10使用WinAppDriver实现UI自动化
- android资源包混淆,Android---andresguard资源混淆
- 为什么不敢和别人竞争_看懂这个自我评价发展曲线,你就明白,为什么青春期孩子如此叛逆...
- window.open 实现session隔离_InnoDB存储引擎MVCC实现原理
- tomcat c3p0 mysql_C3P0数据库连接池与tomcat一起使用时报错
- 不规则图形数格子的方法_小学数学,怎么数平面图形中长方形与正方形个数
- 【mysq 5.7.31】远程访问权限(允许远程连接)
- selenium:反反爬拖动验证码
- 【H2 Database】导出CSV
- idea编译的文件怎么用cmd打开_JAVA学习册|基础语法|cmd输出HelloWorld