您的位置:首页 > 理论基础 > 数据结构算法

数据结构学习之选择排序

2016-03-18 14:44 651 查看
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比较小的时候,特别是在交换的时间级比比较的时间级大的多的时候,选择排序实际上是相当快的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据结构