当前位置: 首页 > news >正文

网站建设公司 南京seo推广优化公司哪家好

网站建设公司 南京,seo推广优化公司哪家好,秦皇岛网站制作价格,wordpress条件搜索提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、不使用IF语句的两数排序方法二、不使用IF的多数排序讨论1、三数比较和排序2、多个数据比较和排序总结前言 这个题目源于已经完成了不使用IF语句对两个数的比…

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、不使用IF语句的两数排序方法
  • 二、不使用IF的多数排序讨论
    • 1、三数比较和排序
    • 2、多个数据比较和排序
  • 总结


前言

这个题目源于已经完成了不使用IF语句对两个数的比较大小,现在推广一下,能不能不使用IF语句完成一个普通的排序呢?本文就改题目进行一个尝试。


一、不使用IF语句的两数排序方法

我们使用伪代码或者C#进行编码,要求外代码支持所有主流语言的语法,但是不支持IF语句以及三目比较运算符。其实三目比较运算符也是一个变形的IF语句,这个本质上不符合我们的要求。
不使用IF语句的两数比较代码如下:

           int[]  x = new int[] { 100, 90};int [] rslt = new int[2] ;var big  = x[(1 - Math.Sign(x[0] - x[1])) / 2];var small = x[(1 - Math.Sign(x[1] - x[0])) / 2];var result = string.Format("big = {0}, small = {1}", big,small);txt_resutl.Text =  result;

上述方法将大数保存到big中,将小数保存到small中, 这样big 和small就构成一个有序序列,我们的问题是能否利用某种方法扩充这个有序序列,如果可以,那么排序就完成了。

二、不使用IF的多数排序讨论

1、三数比较和排序

不是一般性我们以整数为例进行数据的比较。
那么一个两数的有序序列表示如下

	 int[] ints = new int[] {1, 2,};

现在我们思考,如何将第三个数插入到这个数组中。
分析上面两数比较的过程,可知

1 - Math.Sign(x[0] - x[1])) / 2

表示的是大数数组元素的下标 另外一个是小数组元素的下标,这样得到链表排序的两数比较函数如下:

     static public int[] Compare2Number(int[] n){int[] rsult = new int[2];//for (int i = 0; i < cn.Length; i++)//{//    rsult[i] = cn[i];//}var n1 = n[0];var n2 = n[1];var idxA = (1 - Math.Sign(n1 - n2)) / 2;// the index of greater one var idxB = (1 - Math.Sign(n2 - n1)) / 2;// the index of the less onersult[0] = n[idxA];rsult[1] = n[idxB];return rsult;}

利用两数比较的函数,我们思考如何将第三个数放到这个有序队列 baseN 中。可以将第三个数与有序序列baseN 的第一个元素比较,生成一个新的有序序列 r1, 再将r1的第二个元素与baseN的第二个数进行比较,生成另一个有序序列r2。此时
r1[0], r2[0], r2[1] 就是三个元素的排序结果。

代码如下:

            int[] baseN = new int[] { 1,2};int x3 = 3;var r0 = NoIFSort.Compare2Number(baseN);int[] x1 = new int[2];x1[0] = r0[0];x1[1] = x3;var r1 = NoIFSort.Compare2Number(x1);int[] x2 = new int[2];x2[0] = r1[1];x2[1] = r0[1];var r2 = NoIFSort.Compare2Number(x2);int[] rslt = new int[3];rslt[0] = r1[0];rslt[1] = r2[0];rslt[2] = r2[1];

上述代码将结果整合到一个新的序列中。

2、多个数据比较和排序

三数的比较是将第三个数与有序序列baseN 的第一个元素比较,得到一个2元序列,再将最后一个元素与有序序列的第二个元素比较,再得到一个2元序列,恻然生成一个三元有序序列。可以看出,将这个三元序列作为已知有序序列,就可以比较第四个数。这样推而广之,就可以进行能个数的比较。综上分析,可以写出一个数和n个数进行比较排序的代码:

	      static public int[] GetNewOrderSeq(int newX, int[] nSorted,int nSLen){int[] rsult = new int[nSLen+1];var x = newX;for(int i = 0; i < nSLen; i++){int[] cn = new int[2];cn[0] = x;cn[1] = nSorted[i];var new2Cn = Compare2Number(cn);rsult[i] = new2Cn[0];x=new2Cn[1];}rsult[nSLen] = x;return rsult;}

改函数的功能,将一个新数和已知有序序列进行比较,并且生成一个新的有序序列,nSLen 有序序列的长度。

在该函数的基础上,我们对需要排序的序列进行遍历,将元素从头到位一个一个地插到这个序列中,最终这个序列就是一个排好序的有序序列,从而实现对一组数的排序功能。

代码如下:

            int[] ints = new int[] {1, 2, 4, 3, 5, };int[] nSorted = new int[ints.Length];nSorted[0]=ints[0];for (int i = 1; i < ints.Length; i++){var newX = ints[i];nSorted = NoIFSort.GetNewOrderSeq(newX, nSorted,i);}

上面代码使用两个数组,第一个数组保存需要排序的数据,第二个数组保存排序好的数据。

这样我们在不使用IF语句的限制下,完成了一个数组的排序。

PS: 上述代码在C#调试通过。


总结

不使用IF语句比较两个数的大小是本人在多年以前刚刚开始接触计算机的时候碰到的一个题目,当时使用Basic 实现。去年本人把数据结构又看了一遍深受里面名人大咖思想的影响和鼓舞,就一直想在算法上面做些实验。不使用IF语句进行排序也是最近才有的想法,隐约感觉是可以的。经过半天的探索终于实现,是记。

MaraSun BJFWDQ

http://www.hkea.cn/news/105760/

相关文章:

  • 网站后台如何添加关键词软件开发公司
  • 手机做网站的网站windows优化大师卸载不了
  • 万网速成网站有哪些 功能自己的网站怎么推广
  • 邯郸哪有做网站的河南百度推广公司
  • 我是做环保类产品注册哪些浏览量大的网站推销自己的产品比较好呢西安网站seo优化公司
  • 网页传奇游戏排行昆明网络推广优化
  • 商城模板网站模板网站软文是什么
  • 校园网站推广方案怎么做网站排名推广工具
  • 深圳罗湖企业网站建设报价网络媒体发稿平台
  • 用别人公司域名做网站线下推广的渠道和方法
  • php mysql的网站开发外贸推广平台
  • 济南网站建设认可搜点网络能百度指数有三个功能模块
  • 网上商城网站建设意义在线代理浏览网页
  • 网站图片切换代码百度下载并安装最新版
  • 微信公众平台号申请注册入口杭州seo公司
  • 本周实时热点新闻事件seo文章代写一篇多少钱
  • 旺店通app手机企业版下载网站seo如何优化
  • 宝山区建设用地事务所网站网络公司有哪些
  • 用sql做简单的博客网站大连谷歌seo
  • 新手怎么学做网站就业培训机构有哪些
  • magento网站建设搭建网站步骤
  • 营销网站如何实现差异化南京seo公司
  • 服务器托管是啥搜索引擎优化排名培训
  • 山西手机网站建设网址大全123
  • b2c平台有哪些平台网址新区seo整站优化公司
  • WordPress突然全站404网站如何添加友情链接
  • 复制别人网站做第一站seo短视频网页入口引流下载
  • 基层建设论文收录在哪个网站百度统计api
  • 购买主机可以做网站吗楚雄今日头条新闻
  • 深圳专业网站建设公司哪家好宁波网络营销公司