Heim > Backend-Entwicklung > PHP-Tutorial > 一个小问题

一个小问题

WBOY
Freigeben: 2016-06-23 13:25:25
Original
979 Leute haben es durchsucht

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


回复讨论(解决方案)

参考: 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);?>
Nach dem Login kopieren

// 定义数组
$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循环?数组值挨个循环遍历排序

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage