选择排序

来源:互联网 发布:石家庄企业办公软件 编辑:程序博客网 时间:2024/05/23 14:17

选择排序(Selection sort),它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

相比于冒泡排序,比较次数并没有减少,但是交换次数大大减少,大O表示法为O(N)。

代码如下:

先写个工具类

public class SelectArray {    private long[] a;    private int nElems;    public SelectArray(int max) {        a = new long[max];        nElems = 0;    }    //插入数据    public void insert(long value){        a[nElems] = value;        nElems++;    }    //遍历数组    public void display(){        for (int i=0;i<nElems;i++){            System.out.printf(a[i]+" ");        }        System.out.printf(" ");    }    public void SelectSort() {        int out, in, min;        for (out = 0; out < nElems; out++) {            min = out;            for (in = out + 1; in < nElems; in++) {                if (a[in] < a[out]) {                    min = in;                    swap(out, min);                }            }        }    }    //交换位置    public void swap(int one,int two){        long temp = a[one];        a[one] = a[two];        a[two] = temp;    }}

入口函数:

public class SelectSort {    public static void main(String[] args){        int maxSize = 100;        SelectArray arr = new SelectArray(maxSize);        arr.insert(77);        arr.insert(88);        arr.insert(11);        arr.insert(33);        arr.insert(00);        arr.insert(99);        arr.insert(22);        arr.insert(44);        arr.insert(66);        arr.insert(55);        arr.display();        arr.SelectSort();        System.out.println("___________分割线__________________");        arr.display();    }}
结果如下:
77 88 11 33 0 99 22 44 66 55  ___________分割线__________________0 11 22 33 44 55 66 77 88 99