您的位置:首页 > 其它

算法(选择排序的算法)

2015-11-05 09:19 155 查看
是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。 
选择排序是不稳定的排序方法(比如序列[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 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  选择排序