博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
冒泡排序的2种写法
阅读量:4073 次
发布时间:2019-05-25

本文共 1251 字,大约阅读时间需要 4 分钟。

假如有几个数字int score[] = {67, 69, 75, 88};  按照从大到小排序。

有2种思路,第一种,score[j] 和 score[j+1] 比较 如果 前者比后者小,把前者和后者调换顺序,两两调换后一轮下来 最小的会被排到最后去。每一轮j都从0开始,当i轮排序,就有最后面的i个数字因为他是最小的,所以后面的每轮都不用理他了,也就是 score.length-1-i  往后的数不用管了,如上,第一轮有4个数字 i为0 ,那么score.length-1-i  为3,也就是下标是3以后的可以不用管,3往后没有数字,所以第一轮所有的数字都要参加比较,第二轮I=1  score.length-1-i  为2 也就是说 下标2后面的 下标为3的数字不用比了,因为两两比较厚,67会到 score[3],实现代码如下:

for(int i =0;i < score.length - 1;i++)        {            for(int j = 0;j <  score.length - 1-i;j++)// j开始等于0,            {                if(score[j] < score[j+1])                {                    int temp = score[j];                    score[j] = score[j+1];                    score[j+1] = temp;                }            }        }
第二种思路,用88 和 75 比较,在和69 比较 在和 67 比较,发现88是最大的,吧他排到第一位(index=0的位置),然后i=1,也就是第二轮,就不用看下标为0的88了因为他是老大,然后接着比较。;

for(int i =0;i < score.length - 1;i++)        {            for(int j = (score.length - 2);j >= i;j--)            {                if(score[j] < score[j+1])                {                    int temp = score[j];                    score[j] = score[j+1];                    score[j+1] = temp;                }            }        }
说明下j为啥=
(score.length - 2)

因为length=4,我最多能让下标2和下标3的数字比较(j+1最大等于3),也就是4-2=2  j最大=2,2和2+1比较  然后1和2比较,然后 0和1 比较。

转载地址:http://irwni.baihongyu.com/

你可能感兴趣的文章
Flex4 beta 的 Spark 布局
查看>>
Spark 架构和组件集的简要概述
查看>>
关于flex4中文(zh_CN)本地化应用编译不通过的解决方法
查看>>
摩斯密码表
查看>>
一段摩斯密码里的爱情故事
查看>>
游戏测试的技术难点和测试技术
查看>>
线程简介
查看>>
线程挂起自己,让出CPU
查看>>
线程同步(C# 编程指南)
查看>>
创建高效的线程安全类的步骤
查看>>
Failed to load class "org.slf4j.impl.StaticLoggerB
查看>>
使用 Apache MINA 2 开发网络应用
查看>>
MANIFEST.MF文件的格式
查看>>
NIO入门-了解Buffer
查看>>
database如何管理超过4GB的文件
查看>>
[转载]java.util.concurrent.ConcurrentHashMap 如何在不损失线程安全的同时提供更高的并发性...
查看>>
sun game server (sgs)初探
查看>>
類別 ConcurrentHashMap<K,V>的更新,删除
查看>>
如何使用Flex 4新的CSS语法,兼容halo组件
查看>>
flex addChild 的一个小细节
查看>>