怎么排序呢
# 具体遇到的问题
怎么排序呢?
# 报错信息的截图
# 相关课程内容截图
7-1 练习
# 尝试过的解决思路和结果
# 粘贴全部相关代码,切记添加代码注释(请勿截图)
在这里输入代码,可通过选择【代码语言】突出显示
正在回答
同学你好,1、for(int n:a){} 是增强型for循环,与for(int i=0;i<a.length;i++){}一样,都是循环遍历。
2、int temp; 这是声明一个局部变量,来暂时存放变量。
3、 for(int j=0;j<a.length-i-1;j++){} 这行只是为了增加效率,没有其它作用的
这个说法过于绝对,内层循环完成了每次排序的两两比较,不仅提高了效率,还完成了对数据的比较,将最大的值放在最后面。
同学你好,冒泡排序可以通过双重循环,对每相邻的两个数之间进行对比查询
public class SortDemo {
public static void main(String[] args) {
//冒泡排序
int[] a={34,53,12,32,56,17};
System.out.println("排序前的数组元素为:");
for(int n:a){
System.out.print(n+" ");
}
System.out.println();
int temp;
for(int i=0;i<a.length-1;i++){
//内重循环控制每趟排序
for(int j=0;j<a.length-i-1;j++){
if(a[j]>a[j+1]){
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
System.out.println("从小到大排序后的数组元素为:");
for(int n:a){
System.out.print(n+" ");
}
}
}
如上所示的内容,内层循环中把数组a的长度减 i 和减 1 ,是为了减少比较次数,提高运行效率。这样每轮比较的次数就会逐渐减少。因为每次冒泡排序后,最大元素总在最下面,所以不用在比较了。其中减1是因为数组的下标是从0开始,而数组的长度是从1开始的!例如:
数组 arr int[] arr = {34,53,12,32,56,17};
for中的第一遍循环,是确定循环次数,有六个数组元素,循环5次
for中的第二层循环,将a[j]与a[j+1]的元素进行两两比较,
第一遍比较 34 12 32 53 17 56 //已经确定最后一个值是最大值 arr[5]
第二遍比较 12 32 34 17 53 56 //确定最后两个 arr[4] arr[5]
第三遍比较 12 32 17 34 53 56 //确定最后三个 arr[3] arr[4] arr[5]
第四遍比较 12 17 32 34 53 56 //确定最后四个 arr[2] arr[3] arr[4] arr[5]
第五遍比较 12 17 32 34 53 56 //比较最前面的两个数据 比较arr[0] 与arr[1]
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星