Java-选择排序算法
标签:sizestringsystempac描述索引class自己算法
我一定要掌握一些基本的排序算法,对,没错,说到做到,今天学习了选择排序算法。
一、算法描述
首先找到数组中的最小的那个元素,把它和数组的第一个元素位置交换(如果第一个元素是最小元素那么它就和自己交换)。在剩下的元素中找到最小的元素,将它和第二个元素交换位置,如此重复,正道将整个元素排序完成,这种叫做选择排序,就是不断地徐泽剩下元素中的最小者。
举个栗子:
原数组:5, 2 , 9 , 6 , 3(第一趟选择最小数进行交换)
第一趟:2, 5 , 9 , 6 , 3
第二趟:2, 3 , 9 , 6 , 5
第三趟:2, 3 , 5 , 6 , 9
第四趟:2, 3 , 5 , 6 , 9
二、算法复杂度分析
平均时间复杂度:O(n^2)
空间复杂度:O(1)(用于交换和记录索引)
稳定性:不稳定(如[5 , 5 , 3]第一趟将5和3交换,倒置第一个5挪到第二个5后面)
三、算法实现(NO BB Show Your Code)
1 package cn.zpoor.Test;
2 /**
3 * @author 薛定谔的猫
4 * 选择排序实现*/
5 public class Selection {
6 public static void main(String[] args) {
7 int[] arr = {5,2,9,6,3};
8 System.out.println(\”选择排序之前:\”);
9 for(int num:arr) {
10 System.out.print(num+ \” \”);
11 }
12
13 //选择排序的优化
14 for(int i = 0;i<arr.length-1;i++) {
15 int k = i;//记录值
16 for(int j = k+1;j<arr.length;j++) {//选最小的索引值
17 if (arr[j]<arr[k]) {
18 k = j;//记录找到的最小值的索引值