一步步学习数据结构跟算法之选择排序效率分析及java实现

一步步学习数据结构和算法之选择排序效率分析及java实现
选择排序算法效率分析及实现:
public class SelectSort {
 /**
  * 选择排序原理:从待排序序列中选出最小的元素,放入到已排好序列
  * 元素比较次数:需要比较的次数为n(n-1)/2,总的元素移动次数为3(n-1) ,空间占用情况为O(1)
  * 元素交换次数:
  * 最好情况:最好的情况,元素移动的次数为0
  * 最坏情况:和最好情况一致,元素需要移动3(n-1)次
  * 空间占用情况:
  * @param array
  * @return
  */
 public int[] selectSort(int[] array)
 {
  int i,j,len=array.length;
  for(i=0;i<len;i++)
  {
   int k = i;
   for(j=i+1;j<len;j++)//对序列中第i+1以后的元素进行遍历,找到最小元素下标
   {
    if(array[k]>array[j])
    {
     k = j;
    }
   }
   if(k!=i)
   {
    swap(array,i,k); //交换两个元素位置
   }
  }
  return array;
 }
 
 /**
  * 交换两个元素位置
  * @param array
  * @param pivotPos
  * @param i
  */
 private void swap(int[] array,int i,int k)
 {
  int temp = array[k];
  array[k] = array[i];
  array[i] = temp;
 }
 
 /***
  * 打印排序结果
  */
 public void print(int[] array )
 {
  for(int i=0;i<array.length;i++)
  {
   System.out.print(array[i]+",");
  }
 }
 public static void main(String[] args) {
  int[] array = {1,5,9,3,4,18,7,6};
  SelectSort ss = new SelectSort();
  ss.print(ss.selectSort(array));
 }
}