数据结构学习之选择排序

来源:互联网 发布:淘宝便宜的衣服能买吗 编辑:程序博客网 时间:2024/06/06 01:13
package datastructure;class ArraySel{    private long[] a;    private int nElems;    public ArraySel(int max) {        a = new long[max];        nElems = 0;    }    public void insert(long value) {        a[nElems] = value;        nElems++;    }    public void display() {        for (int j = 0; j < nElems; j++) {            System.out.print(a[j] + " ");        }        System.out.println(" ");    }    public void selectionSort() {        int min;        for (int out = 0; out < nElems - 1; out++) {            min = out;            for (int in = out + 1; in < nElems ; in++){                 if (a[in] < a[min])                     min = in;            }            swap(out,min);        }    }    private void swap(int n1,int n2){        long temp = a[n1];        a[n1] = a[n2];        a[n2] = temp;    }}public class selectSort {    public void main(String[] args) {        ArraySel arr = new ArraySel(100);        arr.insert(77);        arr.insert(88);        arr.insert(44);        arr.insert(55);        arr.insert(22);        arr.insert(99);        arr.insert(11);        arr.insert(00);        arr.insert(66);        arr.insert(33);        arr.display();        arr.selectionSort();        arr.display();    }}

与冒泡排序不同的地方在于,此排序是讲整个数据项的最小项找出后,与第一个数组项交换,从而完成排序。

out=0,min=out,此时的最小是为a[0],然后内层循环用来找最小的数据项,然后将它与a[0]交换,内层循环结束,外层中的out自增1,直到循环结束。

选择排序的效率

选择排序和冒泡排序都小号了相同的时间,即O(N^2),但是在交换次数上少了很多。当N较大的时候,比较的次数是主要的,但是当N比较小的时候,特别是在交换的时间级比比较的时间级大的多的时候,选择排序实际上是相当快的。

0 0
原创粉丝点击