51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3748|回复: 1
打印 上一主题 下一主题

java初学之排序——选择排序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-11-1 10:53:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
java初学之排序——选择排序

Java私塾跟我学系列——JAVA篇 网址:www.javass.cn

基本思路:从所有元素中选择一个最小元素 a放在 a[0](即让最小元素 a与 a[0]交换),作为第一轮;第二轮是从 a[1]开始到最后的各个元素中选择一个最小元素,放在 a[1]中;……依次类推。n 个数要进行(n-1)轮。比较的次数与冒泡法一样多,但是在每一轮中只进行一次交换,比冒泡法的交换次数少,相对于冒泡法效率高。

示例如下:

  1. public class Test {
  2.    public static void main(String[] args) {
  3.       //需要排序的数组,目前是按照升序排列的
  4.       int a[] = new int[5];
  5.       a[0] = 3;
  6.       a[1] = 4;
  7.       a[2] = 1;
  8.       a[3] = 5;
  9.       a[4] = 2;

  10.       //选择法排序
  11.       int temp;
  12.       for (int i = 0; ia.length; i++) {
  13.          int lowIndex = i;
  14.          //找出最小的一个的索引
  15.          for (int j=i+1;ja.length;j++) {
  16.             if (a[j]  a[lowIndex]) {
  17.                lowIndex = j;
  18.             }
  19.          }
  20.          //交换
  21.          temp=a;
  22.          a=a[lowIndex];
  23.          a[lowIndex]=temp;
  24.       }

  25.      //检测一下排序的结果
  26.      for(int i  a){
  27.         System.out.println(i=+i);
  28.      }
  29.    }
  30. }
复制代码
运行结果:
i=1
i=2
i=3
i=4
i=5

如果你想要按照降序排列,很简单,只需要把: if (a[j]   a[lowIndex])这句话修改成:if (a[j]  a[lowIndex])就可以了。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-11-2 15:29:04 | 只看该作者
冒泡法是最基本的算法之一
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-25 23:07 , Processed in 0.075751 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表