package com.jn.learning.algorithm.sort;
/**********************************************************************************************
* *
* Written by TankPush (Jn)
*
* Description:
* 选择排序,是不稳定排序:从开始位置,选定一个元素,依次与后面元素比较,如果后面元素比当前元素小,则记录下索引,一次循环找出最小值,之后交换
* 时间复杂度:O(n²)
* 优化:语句,多次使用则分离成方法
* *
***********************************************************************************************/
public class SelectionSort_V1 {
public static void main(String[] args) {
int[] arr = {9, 0, 5, 8, 3, 2, 4, 1, 7, 6};
System.out.print("原数组内容:");
print(arr);//遍历方法
selectionSort(arr);
}
static void selectionSort(int[] arr) {
for (int i = 0; i < arr.length -1 ; i++) {
int minPos = i;
for (int j = i + 1; j < arr.length; j++) {
// if (arr[minPos] > arr[j]) {
// minPos = j;
// }
minPos = arr[minPos] > arr[j] ? j : minPos; //语句优化
}
swap(arr, i, minPos);//交换两个元素方法
System.out.print("经过第" + i + "轮循环之后,数组元素:");
print(arr);//遍历方法
}
}
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) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
选择排序 V2(多次执行的代码单独成方法)
最新推荐文章于 2024-07-14 22:26:46 发布