排序——选择排序小练习(二)

版权声明:本文为 Codeagles 原创文章,可以随意转载,但必须在明确位置注明出处!!!

在上一个《排序——选择排序小练习(一)》中,我们是手动建立一个数组进行传值,那么这个第二篇是通过随机法创建测试用例,毕竟随机数更具有说服力,顺便来复习一下随机数用法吧。

package selectsort;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;

/**
 * 
 * 2017年2月12日 下午10:12:00 author:codeagles Todo:O(n^2)的排序算法
 */
public class SelectSort {

    // 改进版 泛型模板
    public > E[] sortSelectAdvance(E[] a, int n) {
        for (int i = 0; i < a.length; i++) {
            int minIndex = i;
            for (int j = i + 1; j < a.length; j++) {
                if ((Integer) a[j] < (Integer) a[minIndex]) {
                    minIndex = j;
                }

            }
            E tem = a[i];
            a[i] = a[minIndex];
            a[minIndex] = tem;
        }

        return a;

    }

        //随机生成数组
    @SuppressWarnings("unchecked")
    public static > E[] randNumber(int n, int rangeL,
            int rangeR) {
        if (rangeL >= rangeR) {
            System.out.println("不成立");
            return null;
        }
        Integer[] array =new Integer[n];
                //用当前时间作为随机数种子
        Random r =new Random(System.currentTimeMillis());
        
        for (int i = 0; i < n; i++) {
                        //设置偏移量并且都要正整数
            array[i]=(int) (Math.abs(r.nextInt())%(rangeR-rangeL+1)+rangeL);
        }
        return (E[]) array;
    }

    public static void main(String[] args) {
        Integer arr1[] = { 1, 34, 2, 5, 4, 6, 7, 9 };
        Integer arr[] = randNumber(10,2,12);
        SelectSort ss = new SelectSort();
        //
        Integer[] b = ss.sortSelectAdvance(arr, arr.length);
        for (int i = 0; i < b.length; i++) {
            System.out.println(b[i]);
        }
    }

}

你可能感兴趣的:(排序——选择排序小练习(二))