排序_简单排序_选择排序

选择排序是有三个记录值,其中一个记录值标记着需要比较的数组的第一个值,也是变换后的最小值。其中两个记录值记录需要比较的两个对象,而且记录临时最小值的位置和记录另一个还未比较的数据。

public class ArraySel {
    private long a[];
    private int nElems;
    public ArraySel(int maxSize) {
        a=new long[maxSize];
        nElems=0;
    }
    //插入
    public void insert(long value) {
        a[nElems++]=value;
    }
    //显示
    public void display() {
        for(int j=0;j<nElems;j++)
            System.out.print(a[j]+" ");
        System.out.println();
    }
    //排序
    public void selectionSort() {
        int out,in,min;
        for(out=0;out<nElems;out++) {
            min=out;//每一次循环,out与min的位置都一样
            //需要比较的另一个对象的开始位置是第二个,即out+1或者min+1
            for(in=out+1;in<nElems;in++) {
                if(a[in]<a[min])
                    min=in;
            }
            //比较循环完成后,就找到一次外层循环的最小值
            swap(out, min);
        }
    }
    private void swap(int one,int two) {
        long temp=a[one];
        a[one]=a[two];
        a[two]=temp;
    }

}
public class Test {

    public static void main(String[] args) {
        int maxSize=100;
        ArraySel arrayBub=new ArraySel(maxSize);
        arrayBub.insert(77);
        arrayBub.insert(99);
        arrayBub.insert(44);
        arrayBub.insert(55);
        arrayBub.insert(22);
        arrayBub.insert(88);
        arrayBub.insert(11);
        arrayBub.insert(0);
        arrayBub.insert(66);
        arrayBub.insert(33);
        arrayBub.display();
        arrayBub.selectionSort();
        arrayBub.display();

    }

}
原文地址:https://www.cnblogs.com/S-Mustard/p/8097434.html