选择排序

选择排序(java)

 

  1. 运行时间与输入无关。
  2. 数据移动是最少的

首先找到数组中最小的那个元素,其次将它和数组的第一个元素交换位置,再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置,如此反复,直到将整个数组排序

 1 public class Selection
 2 {
 3     public void sort(Comparable[] a)
 4     {
 5 
 6         for(int i=0; i<a.length; i++)
 7         {   
 8                 int min=i; //最小元素的索引
 9                 for(int j=i+1; j<a.length; j++)
10             {
11             if(a[j]<a[min])
12             min=j;
13             if(min!=i)
14             swap(a[j],a[min]);
15         }
16         }
17     }
18 }
19             

 

选择排序(c/c++)

 

void select_sort(int a[])
{
    int min;
    for (int i=0; i <a.length ; i++)
    {
        min= i;
        for (int j=i+1; j < a.length; j++)
        {
            if (a[min] > a[j])
                min = j;
        }
    if (min != i)
    swap(a[min],a[j]);
    }
}

 

 

 

排序类算法模板

 1 //排序算法类模板
 2 public class Sort_template
 3      {
 4     public static void sort(Comparable[] a){}
 5     
 6     //比较v和w
 7     private static boolean less(Comparable v,Comparable w)
 8        {
 9         return v.compareTo(w)<0;
10       }
11     
12     //交换a[i]和a[j]
13     private static void exch(Comparable[] a,int i,int j)
14         {
15         Comparable T; T=a[i];a[i]=a[j];a[j]=T;
16       }
17     
18     打印
19     private static void show(Comparable[] a)
20         {
21         for(int i=0; i<a.length; i++)
22             System.out.print(a[i]+" ");
23             System.out.println();
24       }
25     
26     //测试数组元素是否有序
27         public static boolean isSorted(Comparable[] a)
28         {
29                 for(int i=1; i<a.length; i++)
30                 if(lessa[i], a[i-1])    return false;
31                 return true;
32         }
33         public static void main(String[] args)
34         {
35                 String a = sc.nextLine();
36                 sort(a);
37                 assert isSorted;
38                 show(a);
39         }
40 } 

posted @ 2018-11-09 14:58  黄骏捷的博客  阅读(229)  评论(0编辑  收藏  举报