4 Java 选择排序
1 基本思想
在未排序序列中找到最小元素,存放到未排序序列的起始位置。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种算法,需要对比len-n-1次,但是只交换1次或者0次。
2 算法描述
①. 从待排序列中,找到最小的元素;
②. 如果最小元素不是待排序列的第一个,将其和第一个元素互换;
③. 从余下的 N – 1 个元素中,找出最小的元素,重复①、②步,直到排序结束。
3、代码实现:
public class ChoiceSort {
public static void main(String[] args) {
int[] array = new int[]{10, 1, 9, 2, 8, 3, 7, 4, 6, 5};
choiceSort(array);
}
/**
* 实例:
* 10, 1, 9, 2, 8, 3, 7, 4, 6, 5
* 1, 10, 9, 2, 8, 3, 7, 4, 6, 5
* 1, 2, 9, 10, 8, 3, 7, 4, 6, 5
* 1, 2, 3, 10, 8, 9, 7, 4, 6, 5
* @param array
*/
public static void choiceSort(int[] array) {
int len = array.length;
for (int i=0; i<len-1; i++) {
int minIndex = i;
for (int j=i; j<len-1; j++) {
// 将最小元素下标赋给minIndex
if (array[minIndex] > array[j+1]) {
minIndex = j+1;
}
}
// 最小值不是未排序序列的第一个元素,则与其交换
if (minIndex != i) {
SortUtil.swap(array, minIndex, i);
}
System.out.println(Arrays.toString(array));
}
}
}
4 Java 选择排序的更多相关文章
- java选择排序
/** * 选择排序 * @param a * @date 2016-10-8 * @author shaobn */ public static void selectSort(int[] a){ ...
- java 选择排序法
public class Test3 { /**@author shaobn * @param 选择排序:将a.length - i个元素分别和第i个元素相比较,小的话就将值调换.依次递减进行排列 * ...
- java选择排序详解
排序算法--选择排序 public class Selector implements ISortAble{ @Override public void sort(int[] a) { int n=a ...
- Java选择排序,插入排序,快速排序
public class Test { public static void main(String[] args) { int a[] = { 1, 2, 3, 4, 5 }; 选择排序(a); ...
- java 选择排序、冒泡排序、折半查找
public class SortAndSelectDemo{ public static void main(String[] args){ int[] arr = {3, 5, 17, 2, 11 ...
- Java选择排序算法
package com.jckb; /**选择排序 * * @author gx *算法原理: *第一个数和后面每个数进行比较,如果大于后面的数就进行位置交换, *第一次比较结束后得到了最小值 */ ...
- java 选择排序与冒泡排序
选择排序与冒泡排序的特点与区别 ++++++++++++++++++++++++++++++++++++++++++++++ 选择排序 这一种简单的排序方法,它的基本思想是:R[n]第一次从R[0]~ ...
- java 选择排序
import java.util.Scanner; public class SelectionSort { public static void sort(int[] a, int n){ if(n ...
- 算法:排序----Java选择排序
public static void selectionSort(int[] arr) { int len = arr.length; for (int i = 0; i < len; i++) ...
随机推荐
- linux mint ubuntu 安装qq
git clone https://gitee.com/wszqkzqk/deepin-wine-for-ubuntu.gitcd deepin-wine-for-ubuntu./install.sh ...
- react中怎么写css样式?
JSX基本语法中关于react如何写css样式主要有三种方法 1.基于class --(className) 基于className ,通过className在style中给该class名的DOM元素 ...
- C# 列表中查找大小比较
列表中查找大小比较
- Linux (Ubuntu)使用vi和vim方向键变成了ABCD
ubuntu下 vi输入方向键会变成ABCD,这是ubuntu预装的是vim tiny版本,安装vim full版本即可解决. 首先,卸载了原有的vim $ sudo apt-get remove v ...
- redis-数据淘汰策略
博客标题:Redis的数据淘汰策略及相关注意事项 配置redis.conf中的maxmemory这个值来开启内存淘汰功能 volatile-lru:从已设置过期时间的数据集(server.db[i]. ...
- java8学习之方法引用详解及默认方法分析
方法引用: 之前花了很多时间对Lambda表达式进行了深入的学习,接下来开启新的主题---方法引用(Method References),其实在之前的学习中已经使用过了,如: 那方法引用跟Lambda ...
- vue项目 WebViewJavascriptBridge 适配android和ios
前言 最近在app 原生页面 嵌套 做Vue 的H5,混合开发,当然原生和Vue 交互方面当然用到 WebViewJavascriptBridge 这个东西啦, 当然在用到的时候也有问题,可以参考大佬 ...
- JAVA_GET请求URL
import java.io.IOException; import net.sf.json.JSONObject; import org.apache.commons.httpclient.Defa ...
- 使用nodejs进行开发,concurrently模块,使我们同时执行多个命令。
concurrently模块使用. 安装模块 npm install concurrently 配置concurrently 运行多个服务 当我们使用nodejs和vue混合开发的时候.当要同时启动后 ...
- python爬虫添加请求头
request import requests headers = { # 'Accept': 'application/json, text/javascript, */*; q=0.01', # ...