Java 排序算法 快速排序

ustbfym 2019-11-09

import java.util.ArrayList;
import java.util.Random;

/*
*返回一个数组,下标0是该元素的下标,下标1是该元素的值
*/
public class minNumber {
    //每次返回接受数组中最小的数字,以数组的形式返回,0是最小数,1是它的下标
    public static ArrayList<Integer> findMinNumber(ArrayList<Integer> list){
        ArrayList<Integer> min_number=new ArrayList<Integer>();
        min_number.add(list.get(0));
        min_number.add(0);
        for(int i=1;i<list.size();i++){
            if(list.get(i)<min_number.get(0)){
                min_number.add(0,list.get(i));
                min_number.add(1,i);
            }
        }
        return min_number;
    }
    public static void main(String[] args){
        //第一个是等待排序的列表,第二个相当于第一个的拷贝,第三个就是整理好的数组
        ArrayList<Integer> list=new ArrayList<Integer>(10);
        ArrayList<Integer> pre_sort=new ArrayList<Integer>(10);
        ArrayList<Integer> after_sort=new ArrayList<Integer>(10);

        //装载数组对象,生成随机加入数组
        //因为之后每次会删掉list的元素,所以每次给pre_sort也保存一下
        for(int i=0;i<10;i++){
            Random random=new Random();
            int number=random.nextInt(100);
            list.add(i,number);
            pre_sort.add(i,number);
        }

        //每次找出原数组最小的元素加入新数组
        for(int j=0;j<pre_sort.size();j++){
            //min数组用来保存每次找出的最小数和它的下标,
            int[] min=new int[]{minNumber.findMinNumber(list).get(0),minNumber.findMinNumber(list).get(1)};
            after_sort.add(min[0]);
            if(list.size()>=1){
                list.remove(min[1]);
            }
        }

        System.out.println("排序前:");

        //打印pre_sort数组的元素
        for(int i=0;i<=pre_sort.size()-1;i++){
            System.out.print(pre_sort.get(i)+" ");

        }
        System.out.println();
        System.out.println("排序后:");

        //打印after_sort数组的元素
        for(int i=0;i<=pre_sort.size()-1;i++){
            System.out.print(after_sort.get(i)+" ");
        }
    }
}

相关推荐