冒泡排序,小到大-大到小,xiaoyu a.length 详情见下边

冒泡排序,小到大-大到小,xiaoyu a.length 详情见下边

// 冒泡排序 从小到大   就是<a.length-1,下边是<a.length-j-1;可是从大到小就是a.length,<a.length-1;(亲测的确是)从大到小如果按从小到大,会排不完就输出了。

这个怎么才能知道到底该 < 什么呢?  拜托 详细 说明谢谢啦!!!!

for(int i=0;i<a.length-1;i++) {//走了多少趟

for(int j=0;j<a.length-j-1;j++) {//内循环控制每趟排序,找出每一趟最大值

//从大到小

for(int i=0;i<a.length;i++) {

for(int j=0;j<a.length-1;j++)


正在回答

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

1回答

同学你好,同学的思路有些不正确,对于冒泡排序,从大到小的排序,也同样是通过外循环控制排序的趟数,内循环是控制每趟排序中,两两进行比较的次数,而想要从大到小进行排序,只需要判断如果当前一个元素<后一个元素时,我们进行交换就可以了。

所以并不是判断条件为a.length,内循环为a.length-1;为从大到小排序哦~

如果使用判断条件为a.length,内循环为a.length-1;也是可以排序,但是这种方式是指外循环为一共需要排序数组长度a.length趟,而内循环a.length-1,则代表每一趟排序中都需要重新从第一个元素开始,进行两两元素比较,而其实在第一趟排序中,已经将最大的数排出来,无需再第二趟排序中,再次重新进行比较排出最大的数。所以这种方式会大大的降低执行效率,是不建议的。

从大到小排序的具体修改如下:

http://img1.sycdn.imooc.com//climg/5d819d8b090b194604800246.jpg

代码如下:

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-1-i;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+"     ");
		}

	}

}

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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