算法(选择排序的算法)

来源:互联网 发布:丧尸围城2绝密档案优化 编辑:程序博客网 时间:2024/05/09 21:52
是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 

选择排序是不稳定的排序方法(比如序列[5, 5, 3]第一次就将第一个[5]与[3]交换,导致第一个5挪动到第二个5后面)。

 首先以一个元素为基准,从一个方向开始扫描,比如从左到右扫描,以A[0]为基准,接下来从A[0]….A[9]中找出最小的元素,将其与A[0]交换。然后将其基准位置右移一位,重复上面的动作,比如,以A[1]为基准,找出A[1]~A[9]中最小的,将其与A[1]交换。一直进行到将基准位置移到数组最后一个元素时排序结束。

选择排序代码

package cp.hlg.ken;


public class Select {

/**
* 选择排序
* @param a
*/
    public void selectSort(int [] a) {  
        int n = a.length;  
        //{49 ,38, 65 ,97, 76 ,13 ,27 ,49}
        //趟数
        for(int k=0; k<n-1; k++) {  
            int min = k;  
            //比较次数
            for(int i=k+1; i<n; i++) {  
                if(a[i] < a[min]) {  
                    min = i;  
                }  
            }  
            if(k != min) {  
                int temp = a[k];  
                a[k] = a[min];  
                a[min] = temp;  
            }  
        }  
    }
    
    
    /***
     * 测试选择排序
     * 
     */
    public static void main(String[] args) {
    int[] a={49 ,38, 65 ,97, 76 ,13 ,27 ,49};
    Select select=new Select();
    select.selectSort(a);
    for (int j = 0; j < a.length - 1; j++) {
System.out.print(a[j] + ",");
}
   
}


}



选择排序的结果

13,27,38,49,49,65,76,


【示例】:

 初始关键字 [49 38 65 97 76 13 27 49] 
 第一趟排序后 13 [38 65 97 76 49 27 49]
 第二趟排序后 13 27 [65 97 76 49 38 49]
 第三趟排序后 13 27 38 [97 76 49 65 49]
 第四趟排序后 13 27 38 49 [76 97 65 49]
 第五趟排序后 13 27 38 49 49 [97 65 76]
 第六趟排序后 13 27 38 49 49 65 [97 76]
 第七趟排序后 13 27 38 49 49 65 76 [97]
 最后排序结果 13 27 38 49 49 65 76 97 

0 0
原创粉丝点击