选择排序代码优化
Posted Java算法编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了选择排序代码优化相关的知识,希望对你有一定的参考价值。
一. 简单介绍
选择式排序也属于内部排序法,是从欲排序的数据中,按指定的规则选出某一元素,再依规定交换位置后达到排序的目的。
时间复杂度O(N^2),额外空间复杂度O(1)。
二. 思路
选择排序(select sorting)也是一种简单的排序方法。它的基本思想是:第一次从arr[0]~arr[n-1]中选取最小值,与arr[0]交换,第二次从arr[1]~arr[n-1]中选取最小值,与arr[1]交换,第三次从arr[2]~arr[n-1]中选取最小值,与arr[2]交换,…,第i次从arr[i-1]~arr[n-1]中选取最小值,与arr[i-1]交换,…, 第n-1次从arr[n-2]~arr[n-1]中选取最小值,与arr[n-2]交换,总共通过n-1次,得到一个按排序码从小到大排列的有序序列。
思路分析图
三. 代码实现
public static void main(String[] args) {
int[] arr = new int[]{8, 7, 5, 3, 1, 2};
System.out.println("原数组 : " + Arrays.toString(arr));
for (int i = 0; i < arr.length - 1; i++) {
// 假定最小值下标是0
int minIndex = i;
for (int j = i + 1; j < arr.length; j++) {
// 判断最小值与当前值的大小,把小的下标赋值给minIndex
minIndex = arr[j] < arr[minIndex] ? j : minIndex;
}
// 如果最小值发生变化,则与原来的最小值交换
swap(arr, i, minIndex);
}
System.out.println("排序好的数组 : " + Arrays.toString(arr));
}
private static void swap(int[] arr, int i, int j) {
// 交换
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
总结:我认为这个选择排序之所以好,就是因为这个排序减少了一波小代码,你可以看我前面正常的选择排序,做一下对比,选择出你喜欢的排序。
以上是关于选择排序代码优化的主要内容,如果未能解决你的问题,请参考以下文章
优化 C# 代码片段、ObservableCollection 和 AddRange
使用 C++ 反转句子中的每个单词需要对我的代码片段进行代码优化