选择排序之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;
}
}

运行结果:

选择排序之Java实现的更多相关文章

  1. Java基础(46):选择排序的Java封装(完整可运行)

    1 package lsg.ap.select; import java.util.Random; public class SelectSort { //选择排序 /** *@author: 梁山广 ...

  2. 选择排序算法Java与Python实现

    Java 实现 package common; public class SimpleArithmetic { /** * 选择排序 * 输入整形数组:a[n] [4.5.3.7] * 1. 取数组编 ...

  3. 排序算法系列:选择排序算法JAVA版(靠谱、清晰、真实、可用、不罗嗦版)

    在网上搜索算法的博客,发现一个比较悲剧的现象非常普遍: 原理讲不清,混乱 啰嗦 图和文对不上 不可用,甚至代码还出错 我总结一个清晰不罗嗦版: 原理: 从数组头元素索引i开始,寻找后面最小的值(比i位 ...

  4. 选择排序 思想 JAVA实现

    已知一个数组 9.29.95.47.79.37.18.56.96.22 使用选择排序是数组有序 选择排序同样是一个运行时间为O(N²)的排序算法. 算法思想:(以从小到大为例) 9.29.95.47. ...

  5. 排序算法-选择排序(Java)

    package com.rao.linkList; import java.util.Arrays; /** * @author Srao * @className SelectSort * @dat ...

  6. 选择排序-Python & Java

    选择排序:1.找出最小的数值放在第一位2.找出剩余数据中最小的数值放在第二位,以此类推,直到最后一个数值 算法的时间复杂度为:O(n) ''' 选择排序: 1.找出最小的数值放在第一位 2.找出剩余数 ...

  7. sf02_选择排序算法Java Python rust 实现

    Java 实现 package common; public class SimpleArithmetic { /** * 选择排序 * 输入整形数组:a[n] [4.5.3.7] * 1. 取数组编 ...

  8. 经典排序算法之-----选择排序(Java实现)

    其他的经典排序算法链接地址:https://blog.csdn.net/weixin_43304253/article/details/121209905 选择排序思想: 思路: 1.从整个数据中挑选 ...

  9. 简单选择排序(Java)

    简单选择排序: 每一趟在整个记录中找到最小的那个作为有序序列的第i个记录. class SelectSort{ public void p(int[] a){ for(int i=0;i<a.l ...

随机推荐

  1. UNIX环境高级编程 第16章 网络IPC:套接字

    上一章(15章)中介绍了UNIX系统所提供的多种经典进程间通信机制(IPC):管道PIPE.命名管道FIFO.消息队列Message Queue.信号量Semaphore.共享内存Shared Mem ...

  2. 【驱动】USB驱动实例·串口驱动·键盘驱动【转】

    转自:http://www.cnblogs.com/lcw/p/3159370.html Preface USB体系支持多种类型的设备. 在 Linux内核,所有的USB设备都使用 usb_drive ...

  3. iframe内部刷新后跳转锚点

    开发过程中需要在iframe内容页中点击刷新按钮刷新页面并跳转至页面底部,编写js函数在url后面加上锚点名称#mao,但发现并未达到预期效果,通过测试发现锚点只有在第一次访问页面的时候才会生效,所有 ...

  4. 二十、springboot之jpa开发@MappedSuperclass 注解说明

    @MappedSuperclass使用条件: 当我们进行开发项目时,我们经常会用到实体映射到数据库表的操作,此时我们经常会发现在我们需要映射的几个实体类中,有几个共同的属性,例如编号ID,创建者,创建 ...

  5. maven package exec 及 maven 配置文件详解

    maven package test包下执行test 的配置文件 生成target目录,编译.测试代码,生成测试报告,生成jar/war文件 maven 配置文件详解 http://blog.csdn ...

  6. python基础-类的起源

    Python中一切事物都是对象. class Foo(object): def __init__(self,name): self.name = name f = Foo("alex&quo ...

  7. 使用插件实现Jenkins参数化构建

    一.插件安装 1.打开插件管理,在此界面可以安装插件 二.参数化 1.在“可选插件”中查找如下两个插件然后安装,安装后重启Jenkins Build With Parameters 输入框式的参数 P ...

  8. 程序设计分层思想和DAO设计模式的开发

    无论是一个应用程序项目还是一个Web项目,我们都可以按照分层思想进行程序设计.对于分层,当下最流行划分方式是:表现层+控制层+业务层+数据层.其中,业务层和数据层被统称为后台业务层,而表现层和控制层属 ...

  9. Javascript之对象的创建

    面向对象语言有一个非常显著的标志,那就是它们都有类的概念,通过类之间的继承就可以达到任意创建具有相同属性方法的对象.而在ECMAScript中并没有类的概念,它把对象定义为:无序属性的集合,其属性包含 ...

  10. ZOJ 3537 Cake(凸包+区间DP)

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3537 题目大意:给出一些点表示多边形顶点的位置,如果不是凸多边形 ...