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