来黑马也已经十天左右了,课程也走完了第一阶段的六天。 六天的学习内容其实也不是很多,第一天的环境搭建+一些Java基础,第二天的数据类型+if选择,第三天的swith选择与循环,第四天的数组与第五天的方法,再加上第六天的一些总结,都是一些比较简单但其实非常重要的知识。 今天的话,来和大家聊一下关于数组排序的情况。 在之前自习的时候,葛老板提供的是方法是选择排序,先附上代码。 public static void selectSortArr(int[] arr) {
/*实现:
将数组从小到大排序
最外层循环 i 表示数组索引,即当前循环想要实现的目标是:
将 arr 与 arr[i+1] ~ arr[arr.length - 1] 之间所有的数据进行比较 ( 内层循环功能 )
只要比 arr 小就进行交换,从而将索引 i 到最后 所有的数据中最小的数据保存到索引 i 中
随着i++的步进,便能实现每一次的循环都能得到 当前索引 到 最后索引 的数组最小值
*/
for (int i = 0; i < arr.length - 1; i++) {
for (int j = i + 1; j < arr.length; j++) {
//将较小的数保存在索引为 i 的位置,永远保证索引为 i 的位置上为最小值
if(arr > arr[j]){
int temp = arr;
arr = arr[j];
arr[j] = temp;
}
}
}
} 其实不论是不是数组排序,方法最重要的便是明确你想要怎么实现这个它。 而对于选择排序而言,我们便是要知道我们是想要把自 当前索引 到 最后索引 的所有数据中 最小的数据 保存到 当前索引。那么思路就来了,将外层循环设定为 当前索引,而内存循环设定为要进行比较的索引,遇到小的便保存到 当前索引,这样便能保证方法了。 冒泡排序与选择排序异曲同工,只是我们将想要的数据像泡泡上浮一样让它到我们希望他去得位置,代码如下: public static void bubbleDortArr(int[] arr){
for(int i = arr.length - 1;i > 0;i--){
for(int j = 0;j <i;j++){
if(arr[j] < arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
} 冒泡排序与选择排序异曲同工。 外层循环同样是我们当前想要操作的索引,而内层循环便是比较了,将想要的数据随着索引一次向后移动,因为我们比较的是arr[j]和arr[j+1]的数值,所以让 j+1 = i就好了,即j<i就可以了。 数组的排序方法还有很多,这里就不多加赘述了。
|