选择排序之Java实现

一、方法一

 package cn.com.zfc.lesson21.sort;

 /**
*
* @title SelectSort
* @describe 选择排序
* @author 张富昌
* @date 2016年10月1日下午4:13:50
*/
public class SelectSort_1 {
// 简单选择排序的第 i 趟是从(elem[i],elem[i+1],...,elem[n-1])选择第 i小的元素,并将此元素放到 elem[i];
// 简单选择排序是从未排序的序列中选择最小元素,接着是次小元素,依此类推,为寻找下一个最小元素,需检索数组中未排序部分;
// 但只一次交换即将待排元素放到正确位置上 public static void main(String[] args) {
// 声明整型数组
int[] array = new int[10];
// 使用循环和随机数初始化数组
for (int i = 0; i < array.length; i++) {
array[i] = (int) Math.round(Math.random() * 100);
}
System.out.println("原始数组为:");
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
System.out.println("排序后的数组为:");
for (int i : selectSort(array)) {
System.out.print(i + " ");
}
} /**
*
* 功能:选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,
* 直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。
*
* 参数:int[] array
*
* 返回类型:int[]
*/
public static int[] selectSort(int[] array) {
// 使用临时数组,替代原始数组
int[] arr = array;
for (int i = 0; i < arr.length - 1; i++) {
// 存放当前最小值的索引
int min_index = i;
for (int j = i + 1; j < arr.length; j++) {
// 判断当前的最小值的索引
if (arr[min_index] > arr[j]) {
min_index = j;
}
}
// 如果此时的 i 不等于 min_index,则交换该位置上的值
if (i != min_index) {
int temp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = temp;
}
}
return arr;
}
}

运行结果:

二、方法二

 package cn.com.zfc.lesson21.sort;

 /**
*
* @title SelectSort
* @describe 选择排序
* @author 张富昌
* @date 2016年10月1日下午4:13:50
*/
public class SelectSort_2 {
// 简单选择排序的第 i 趟是从(elem[i],elem[i+1],...,elem[n-1])选择第 i小的元素,并将此元素放到 elem[i];
// 简单选择排序是从未排序的序列中选择最小元素,接着是次小元素,依此类推,为寻找下一个最小元素,需检索数组中未排序部分;
// 但只一次交换即将待排元素放到正确位置上 public static void main(String[] args) {
// 声明整型数组
int[] array = new int[10];
// 使用循环和随机数初始化数组
for (int i = 0; i < array.length; i++) {
array[i] = (int) Math.round(Math.random() * 100);
}
System.out.println("原始数组为:");
for (int i : array) {
System.out.print(i + " ");
}
System.out.println();
System.out.println("排序后的数组为:");
for (int i : selectSort(array)) {
System.out.print(i + " ");
}
} /**
*
* 功能:选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,
* 直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。
*
* 参数:int[] array
*
* 返回类型:int[]
*/
public static int[] selectSort(int[] array) {
// 使用临时数组,替代原始数组
int[] arr = array;
for (int i = 0; i < arr.length - 1; i++) {
// 存放当前最小值的索引
int min_index = i;
for (int j = i + 1; j < arr.length; j++) {
// 判断当前的最小值的索引
if (arr[min_index] > arr[j]) {
min_index = j;
}
}
// 如果此时的 i 不等于 min_index,则交换该位置上的值
if (i != min_index) {
int temp = arr[min_index];
arr[min_index] = arr[i];
arr[i] = temp;
}
}
return arr;
}
}

运行结果:

最新文章

  1. gcc
  2. SQL SERVER With语法[转]
  3. 学习OpenStack之 (1):安装devstack
  4. 【原】关于使用jieba分词+PyInstaller进行打包时出现的一些问题的解决方法
  5. new在c#方法中的使用
  6. JAVA 调用命令并输出
  7. nodejs API笔记
  8. 邪恶改装2:用单片机实现一次简单的wifi密码欺骗
  9. Redisson碰到的问题
  10. 野路子Java开发的一篇随笔
  11. while(cin&gt;&gt;n1&gt;&gt;n2)
  12. 微信原始坐标转换成百度坐标 lat lng
  13. HTML中body与html的关系
  14. JS中=&gt;,&gt;&gt;&gt;是什么意思
  15. 实例讲解TP5中关联模型
  16. 移动端Android软键盘遮住输入框解决!
  17. 使用Aptana Studio 3开发让Extjs变的更简单
  18. cv::circle《转》
  19. java多线程 --ConcurrentLinkedQueue 非阻塞 线程安全队列
  20. java基础62 JavaScript中的函数(网页知识)

热门文章

  1. JS中数组那些事~
  2. php的几个实用正则表达式
  3. AndroidManifest.xml权限设置
  4. linux 获取时间后--自定义时间格式
  5. Microsoft.AspNet.SignalR使用cookie丢失
  6. linux系统时钟和硬件时钟不一致
  7. cobbler 无人值守系统安装
  8. iframe内部刷新后跳转锚点
  9. BigDecimal常用方法
  10. Ubuntu 18.04安装MongoDB 4.0(社区版)