算法之选择排序

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=9min=4,max=9min=2,max=9min=1,max=9min=1,max=9min=1,max=9min=1,max=9min=1,max=9min=1,max=101次循环,数组内容:1 5 4 2 9 3 8 6 7 10 min=4,max=5min=2,max=5min=2,max=9min=2,max=9min=2,max=9min=2,max=9min=2,max=92次循环,数组内容:1 2 4 5 7 3 8 6 9 10 min=4,max=5min=4,max=7min=3,max=7min=3,max=8min=3,max=83次循环,数组内容:1 2 3 5 7 4 6 8 9 10 min=5,max=7min=4,max=7min=4,max=74次循环,数组内容:1 2 3 4 6 5 7 8 9 10 min=5,max=65次循环,数组内容:1 2 3 4 5 6 7 8 9 10 


推荐阅读

• • 


以上是关于算法之选择排序的主要内容,如果未能解决你的问题,请参考以下文章

算法排序之堆排序

经典算法之选择排序

常用排序算法之选择排序

排序算法系列之选择排序

数据结构与算法之排序算法:选择排序

python 数据结构与算法之排序(冒泡,选择,插入)