常用排序算法之直接选择排序java版

来源:互联网 发布:rup软件过程模型 编辑:程序博客网 时间:2024/06/06 01:27

直接选择排序


算法描述:

  1. 首先找出最大的元素,将其与 a[n- 1]位置交换;
  2. 然后在余下的 n- 1 个元素中寻找最大的元素,将其与 a[n- 2]位置交换,
  3. 如此进行下去直至 n 个元素排序完毕。

过程实例:

初始元序列: 8 3 2 5 9 3* 6

第一趟排序: 8 3 2 5 6 3* 【9 】

第二趟排序: 3* 3 2 5 6 【 8 9 】

第三趟排序: 3* 3 2 5 【6 8 9 】

第四趟排序: 3* 3 2 【5 6 8 9 】

第五趟排序: 2 3 【3* 5 6 8 9 】

第六趟排序: 2 【 3 3* 5 6 8 9 】

程序实例:

/**     * @param arr 待排序序列     */    public void sort(int []arr) {        int x;        int k,j;        for (int i = arr.length-1; i >=0 ; i--) {            for(k=i,j=i-1;j>=0;j--){//找出序列当中最大的一个                if(arr[k]<arr[j]){                    k=j;                }            }            if(k!=j){  //第I位和第K位交换位置                x=arr[k];                arr[k]=arr[i];                arr[i]=x;            }        }    }

从上面可以看出来,直接选择排序是比较比移动多,意思是说大部分时间都在进行比较,由于字符串的比较比较耗费时间,所以,当对字符串排序的时候,强烈推荐不要使用这个方法。

0 0
原创粉丝点击