一个小问题

WBOY
发布: 2016-06-23 13:25:25
原创
964 人浏览过

自定义一个整数类型数组,对这数组的数从小到大进行排序,不能用函数,只能用索引数组。
咋搞?
这是老师布置的作业,想了想发现技术难度不亚于阿波罗登月,当然对大牛来说小菜一碟,谁能给个思路?老师老说编程要有编程思想,思想不是书上的东西,而是经过你吸收消化长在你脑子里,能应对问题的能力,这能力要多写程序多思考多锻炼才有。
可就是想不出来。都说搞技术的要有废寝忘食痴迷于解决问题的精神,可自己就是解决不了就会被活活憋死,痛苦啊。。。


回复讨论(解决方案)

参考: http://blog.csdn.net/fdipzone/article/details/8974656

参考: http://blog.csdn.net/fdipzone/article/details/8974656

看不懂啊,能稍微解释一下吗,版主君?

冒泡排序。
过程:
1.遍历整个数组,每两两相邻的元素进行比较,如$a[$i]>$a[$i+1]则互换位置,每次比较消除一个逆序。
2.每一次循环后,下次再需要循环的次数减少1。

<?php// 定义数组$arr = array(2,3,1);for($i=0,$length=count($arr)-1; $i<$length; $i++){  // 定义外层循环需要数组长度-1次,因为两两比较    for($j=0; $j<$length-$i; $j++){  // 定义内层循环次数,-i表示已经排好的元素不用再参加比较,内层循环结束后,都会得出这组循环中最大的一个数,排到右边.        // 这三句话作用是,如果左边的元素比右边的大,则交换两个元素的位置,这样在循环结束后,就能得出这组数中最大的一个数。每次都这样执行,直到最后一个数        if($arr[$j]>$arr[$j+1]){              $tmp = $arr[$j];              $arr[$j] = $arr[$j+1];              $arr[$j+1] = $tmp;          }      }  } print_r($arr);?>
登录后复制

// 定义数组
$arr = array(2,3,1);

因为数组元素有3个,所以需要进行2次外循环

第一次内循环开始,因为3个元素,所以内循环2次
第一步
$arr[0] 与 $arr[1] 比较 2第二步
$arr[1] 与 $arr[2] 比较 3>1 所以$arr[1]与 $arr[2]的值交换,数组变为 array(2,1,3); 这样得出这组数中最大是3,排在最右。

第二次循环开始,因为未排序的是2个元素,所以内循环1次
第一步
$arr[0] 与 $arr[1] 比较 2>1 所以$arr[1]与 $arr[2]的值交换,数组变为 array(1,2,3); 这样得出这组数中最大是2,排在3的左边。

这样就排序成功了。

// 定义数组
$arr = array(2,3,1);

因为数组元素有3个,所以需要进行2次外循环

第一次内循环开始,因为3个元素,所以内循环2次
第一步
$arr[0] 与 $arr[1] 比较 2第二步
$arr[1] 与 $arr[2] 比较 3>1 所以$arr[1]与 $arr[2]的值交换,数组变为 array(2,1,3); 这样得出这组数中最大是3,排在最右。

第二次循环开始,因为未排序的是2个元素,所以内循环1次
第一步
$arr[0] 与 $arr[1] 比较 2>1 所以$arr[1]与 $arr[2]的值交换,数组变为 array(1,2,3); 这样得出这组数中最大是2,排在3的左边。

这样就排序成功了。

如果是十个数的数组呢?

有区别吗?为什么上课时不认真听讲

$arr = array(2,3,1); 这是3个数

$arr = array(2,3,1,6,7,8,4,5,9,10); 这是10个数

其他不变就可以了。

如果你是要十个数的算法步骤,我已经给出你三个数的例子。
你其实可以这样,先做4个数的吧,有3个数的例子,再做4个数的应该不难。然后做5,6,7,8,9,10的,慢慢一步步加上去就可以了。

老师说的话 瞎扯哈哈哈哈  。借用知乎的话很多人的努力还没有到拼智慧的时候 你的这个题目  几代程序员都玩腻了和四则运算一样了。
你可以假设生活的场景 有一桶鱼  大小不一  你老妈要你给它按大小排序  你会怎么给它排序 。再简单一点 有一副牌 只有10张 1-10   你会怎么给它排序??(这特么就是你大牌的时候 理牌的动作么)

老师说的话 瞎扯哈哈哈哈  。借用知乎的话很多人的努力还没有到拼智慧的时候 你的这个题目  几代程序员都玩腻了和四则运算一样了。
你可以假设生活的场景 有一桶鱼  大小不一  你老妈要你给它按大小排序  你会怎么给它排序 。再简单一点 有一副牌 只有10张 1-10   你会怎么给它排序??(这特么就是你大牌的时候 理牌的动作么)

你们怎么这么牛啊,感觉这种题特别绕特伤脑筋,怎样才能达到你们这水平?或者说你们是怎么练的?求指导,感激涕零。。。

本菜鸟现在在搞PHP培训,大约春节前结束。到时候差不多已草尽粮绝,如果学的不精就找不到工作,那只能流浪街头加入丐帮了。。。帮帮我吧,怎样成为高水平程序员?

不懂就多写写   冒泡排序 选择排序这些都可以

不懂就多写写   冒泡排序 选择排序这些都可以

关键是没学过,比如for($i=0,$length=count($arr)-1; $i


不懂就多写写   冒泡排序 选择排序这些都可以

关键是没学过,比如for($i=0,$length=count($arr)-1; $i
这些基础还是要学下的,先把基础学好

知道for循环?数组值挨个循环遍历排序

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板