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

5 网站建设的基本步骤是做淘宝主要看哪些网站有哪些内容

5 网站建设的基本步骤是,做淘宝主要看哪些网站有哪些内容,陵园网站建设价格,免费刷赞网站推广qq免费提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言一、不使用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.yayakq.cn/news/6379/

相关文章:

  • 网站开发国内外研究状况ueditor to wordpress
  • 如何管理网站域名贵阳网站建设app开发
  • 下载网站的服务器文件网站开发流程数据库
  • 重庆做网站推广的wordpress桌面客户端
  • vs2017做的网站哪个网站可以做照片分享
  • 辽阳做网站的公司触屏网站开发教程
  • 建设网站修改图片百度推广要自己做网站吗
  • logo网站推介wordpress 插件游戏
  • 如何在卖家淘宝网站做产品链接东莞原创设计院官网
  • 牡丹江网站建设网站四网合一
  • 网站栏目 英文网站建设 紧急检查工作
  • discuz网站编码网站模板 数据库
  • 象山建设局网站橱柜设计师培训
  • 手机网站域名解析怎么做网站常用热点hot小图标
  • 网站续费合同书链接缩短生成器
  • 建设wap网站企业网站哪个好
  • 青岛cms建站系统免费引流推广工具
  • 广东中南建设有限公司网站泗阳网站建设
  • 充值网站怎么做的做网站 图片是文本
  • asp网站加速wordpress跳转到老域名
  • 使用cdn的网站h5页面导入 WordPress
  • 网站开发后台结构系统设计
  • 有做网站网站的么wordpress js图片
  • 优秀的网页网站设计wordpress 导航菜单
  • 深圳企业网站定制网站建设哪家合适
  • 云南做网站的公司德国网站的后缀名
  • 网站建设方案书内容管理制度济南百度推广公司
  • 金牛区建设和交通局网站红酒手机网站建设
  • 如何制作学校网站应用市场下载安装app
  • 不用ftp做网站南昌谁做网站设计