JAVA选择排序

来源:互联网 发布:bae 数据库 编辑:程序博客网 时间:2024/06/07 13:05

一、选择排序是一种不稳定的排序方法,其主要思想是:每趟排序在当前待排序序列中选出关键码最小的记录,添加到有序序列中。通俗理解即:当前值和后序队列中所有制进行比较,选出最小的。

二、代码理解

class SelectSortDemo{public static void main(String[] args){int[] arr={10,9,3,4,8,1,7,6,0,5};sort(arr);print(arr);}//选择排序public static void sort(int[] arr){for(int i=0;i<arr.length;i++){int k=i;for(int j=i+1;j<arr.length;j++){if(arr[k]>arr[j]){k=j;       // 记录最小值索引位置}}if(k!=i){swap(arr,k,i);  }}}// 交换数值public static void swap(int[] arr,int k,int i){int temp=arr[i];arr[i]=arr[k];arr[k]=temp;}// 打印数组public static void print(int[] arr){for(int i=0;i<arr.length;i++){System.out.print(arr[i]+" ");}}}
三、时空复杂度

在待排序序列为正序时,记录的移动次数最少,为0,;在待排序序列为逆序时,记录的移动次数最多,为3(n-1)次。无论记录的初始排列如何,关键码的比较次数相同第i躺排序需要n-i次关键码的比较。

所以:总的时间复杂度为O(n^2)。

在简单选择排序过程中,值需要一个用来作为交换的暂存单元。

所以:空间复杂度为O(1)。


原创粉丝点击