本帖最后由 小鲁哥哥 于 2018-3-9 15:41 编辑
【济南校区】JavaEE基础阶段必会案例NO.29-选择排序
黑马程序员课程内容丰富多样,每个知识点我们都设计有新奇的案例让大家练习。黑马程序员训练营的课程也是案例驱动教学,每天都会进行大量的代码练习。今天我们就来一起做一个基础第一阶段第6天的一个小案例。 案例: 这里有一个数组,大小顺序随机排列,现在要求你将这个数组的元素从大到小排列。 int[] arr = {3,6,4,8,9}; 是不是感觉很简单?哈哈,自己先做一做试试,如果能自己做出来就更好啦~当然做法不只有一种哦!
好,这里老师讲一种排序算法交 选择排序,其实原理说起来很简单,就是每次把元素中的最大值找出来和排在最前的元素交换位置。如果这样说还不是很理解,那就直接看看代码吧! [Java] 纯文本查看 复制代码 public class Test04_xuanze {
public static void main(String[] args) {
int[] arr = {3,6,4,8,9};
//遍历数组
for (int i = 0; i < arr.length; i++) {
int index = i;
for (int j = i; j < arr.length; j++) {
if(arr[j] > arr[index]){
index = j;
}
}
int temp = arr[i];[/i]
arr = arr[index];
arr[index] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr + " ");
}
}
}
如果自己能把代码看懂,自己多敲几遍掌握了最好了。如果基础差点代码看不懂 ,没关系,这里老师带着大家仔细分析一下:
首先这个数组是{3,6,4,8,9},第一层for循环我们遍历数组,第一个拿到的是3,这是i=0,index=0, 然后开始执行第二层的for循环,j的值从i-arr.length
也就是j的值从 0 1 2 3 4,取到数组中所有的值跟arr[index]比较,遇到比它值大的就给它重新赋值,arr[index]的值从3 变为6,8,9,最终第二层for循环结束,arr[index]值里是9,这时继续向下执行,把9和3的值交换,这就完成了一次外层循环,然后i++ 变成1,开始第二次外层循环,此时数组中的元素变为{9,6,4,8,3}
注意,循环的嵌套不容易理解的地方就是外层循环变量变化一次,内层循环的变量要变化一轮。所以i变成1以后,j的值从i-arr.length变化一轮,1 2 3 4
取到数组中所有的值跟arr[index]比较,最终arr[index] 的值为8,然后内层循环结束,把8和6交换位置。此时数组中的元素变为{9,8,4,6,3}
再i++ 继续执行,交换6和4,此时数组中的元素变为{9,8,6,4,3},程序还会继续执行比较4 和 3 但是不会交换了,这里就完成了我们的排序。
怎么样?能看懂这个流程吗?
我们来画图看看这个过程:
自己敲几遍试试吧~
ok!大工告成!!
运行结果没有问题
好了,希望通过这个案例大家对于数组,循环相关的方法能更加熟悉,如果再遇到相关的题目可以自己完成!现在把这个案例多敲几遍吧! 其实,每个案例都有很多种写法,不同的人可能有不同的思路。黑马程序员训练营也是非常鼓励大家开动脑筋积极思考的。
做完了这个题,离你走上人生巅峰又近了一步,继续加油吧!骚年!
点进这个帖子的同学肯定是要奋发图强,学技术拿高薪的有志青年,这里我看你骨骼惊奇,是个绝世的练武奇才,你我有缘,今天我就把这个武林秘籍如来神掌传授于你! 什么?不想学如来神掌?不要紧!这里有各个门派的武林绝学,链接拿好!!哈哈哈哈
|