算法之选择排序
Posted 呲花是朵花
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了算法之选择排序相关的知识,希望对你有一定的参考价值。
常见的排序
选择排序
最简单但也最没用的排序算法。
/**
* 选择排序
*/
public class SelectionSort {
public static void main(String[] args) {
int[] intArr = {5, 4, 5, 1, 3};
sort(intArr);
}
static void sort(int[] intArr) {
for (int i = 0; i < intArr.length - 1; i++) {
// 默认最小值是每次循环中的第一个值
int minIndex = i;
// 比较数组里的每个值是否小于最小值
for (int j = i + 1; j < intArr.length; j++) {
// 如果小于最小值,则它为最小值
if (intArr[j] < intArr[minIndex]) {
// 记录最小值的下标
minIndex = j;
}
}
swap(intArr, i, minIndex);
System.out.println("第"+(i+1)+"次循环,数组内容:");
print(intArr);
}
print(intArr);
}
/**
* 交换元素位置
* @param arr 数组
* @param i 位置1
* @param j 位置2
*/
static void swap(int[] arr, int i, int j) {
// 记录原最小值,用于和最小值互换
int temp = arr[i];
// 数组中原最小值换为新的最小值
arr[i] = arr[j];
// 最小值的位置换为原最小值
arr[j] = temp;
}
static void print(int arr[]) {
Arrays.stream(arr).forEach(num->{
System.out.print(num + " ");
});
System.out.println();
}
}
package com.zyj.study.algorithm.sort;
import java.util.Arrays;
/**
* 选择排序--优化
*/
public class SelectionSort2 {
static int[] intArr = {9, 5, 4, 2, 1, 3, 8, 6, 7, 10};
public static void main(String[] args) {
print(intArr);
for (int i = 0; i < intArr.length - i - 1; i++) {
int minIndex = i;
int maxIndex = i;
for (int j = i + 1; j < intArr.length - i; j++) {
minIndex = intArr[j] < intArr[minIndex] ? j : minIndex;
maxIndex = intArr[j] > intArr[maxIndex] ? j : maxIndex;
System.out.println("min="+intArr[minIndex]+",max=" + intArr[maxIndex]);
}
swap(intArr, i, minIndex);
if (i == maxIndex) {
maxIndex = minIndex;
}
swap(intArr, intArr.length - i - 1, maxIndex);
System.out.println("第"+(i+1)+"次循环,数组内容:");
print(intArr);
}
}
/**
* 交换元素位置
* @param arr 数组
* @param i 位置1
* @param j 位置2
*/
static void swap(int[] arr, int i, int j) {
// 记录原最小值,用于和最小值互换
int temp = arr[i];
// 数组中原最小值换为新的最小值
arr[i] = arr[j];
// 最小值的位置换为原最小值
arr[j] = temp;
}
static void print(int arr[]) {
Arrays.stream(arr).forEach(num->{
System.out.print(num + " ");
});
System.out.println();
}
}
9 5 4 2 1 3 8 6 7 10
min=5,max=9
min=4,max=9
min=2,max=9
min=1,max=9
min=1,max=9
min=1,max=9
min=1,max=9
min=1,max=9
min=1,max=10
第1次循环,数组内容:
1 5 4 2 9 3 8 6 7 10
min=4,max=5
min=2,max=5
min=2,max=9
min=2,max=9
min=2,max=9
min=2,max=9
min=2,max=9
第2次循环,数组内容:
1 2 4 5 7 3 8 6 9 10
min=4,max=5
min=4,max=7
min=3,max=7
min=3,max=8
min=3,max=8
第3次循环,数组内容:
1 2 3 5 7 4 6 8 9 10
min=5,max=7
min=4,max=7
min=4,max=7
第4次循环,数组内容:
1 2 3 4 6 5 7 8 9 10
min=5,max=6
第5次循环,数组内容:
1 2 3 4 5 6 7 8 9 10
推荐阅读
• •
以上是关于算法之选择排序的主要内容,如果未能解决你的问题,请参考以下文章