算法与数据结构_02_选择排序

选择排序

  • 什么是选择排序?

    • 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。

    • 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。

    • 重复第二步,直到所有元素均排序完毕。

  • 代码:

        
    
     public class SelectionSort {
    
         /**
          * 测试方法
          * @param args
          */
         public static void main(String[] args) {
            Integer[] array={4,6,8,7,9,2,10,1};
            sort(array);
             for (Integer i:array) {
                 System.out.println(i);
             }
         }
    
         /**
          *  - 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
          *
          *  - 再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。
          *
          *  - 重复第二步,直到所有元素均排序完毕。
          *
          * @param array
          */
         public static void sort(Comparable[] array){
             
             for (int i=0;i<array.length-1;i++){
    
                 //定义一个变量记录最小元素所在处的索引,默认为参与选择排序的第一个元素
                 int minIndex=i;
    
                 for(int j=i+1;j<array.length;j++){
    
                     //比较最小索引处的值和j索引处的值
                    if(gerater(array[minIndex],array[j])){
                       minIndex=j;
                    }
                 }
                 // 一次内循环过后,就得到了当前最小的minIndex,那么就将最小索引处的值,和第一个元素的值进行交换,
                  swap(array,i,minIndex);
              }
         }
    
    
         //判断v是否大于w
         public static boolean gerater(Comparable v,Comparable w){
             return v.compareTo(w)>0;
         }
    
    
         //交换数组中索引i和索引处的值
         public static void swap(Comparable[] array,int i,int j){
             Comparable temp=0;
             temp=array[i];
             array[i]=array[j];
             array[j]=temp;
         }
    
     }
    
posted @ 2021-04-19 21:55  失昼  阅读(44)  评论(0)    收藏  举报