怎么排序呢

怎么排序呢

# 具体遇到的问题
怎么排序呢?
# 报错信息的截图

# 相关课程内容截图
7-1 练习
# 尝试过的解决思路和结果

# 粘贴全部相关代码,切记添加代码注释(请勿截图)

在这里输入代码,可通过选择【代码语言】突出显示

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,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++){}  这行只是为了增加效率,没有其它作用的

这个说法过于绝对,内层循环完成了每次排序的两两比较,不仅提高了效率,还完成了对数据的比较,将最大的值放在最后面。


好帮手慕小班 2020-11-23 11:23:09

同学你好,冒泡排序可以通过双重循环,对每相邻的两个数之间进行对比查询

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]


  • 提问者 Jack小倪 #1
    谢谢,还有两个问题: 1. for(int n:a){} //这行是什么意思呢 2. Int temp; // 这行是引用temp,还是将temp定义为整数 3. for(int j=0;j<a.length-i-1;j++){} //这行只是为了增加效率,没有其它作用的,对吧
    2020-11-24 12:43:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
零基础Java入门体验课
  • 参与学习           人
  • 提交作业       437    份
  • 解答问题       393    个

慕课网首推Java体验课,用体系化的学习方式+实战性的项目练习,带你轻松入门Java~

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师