各种简单排序时公司面试笔试的喜好。分享一下书中源码,大家可以根据需要改写。
class ArraySel{
private long[]a; //封装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 out, in,min;
for (out=0; out<nElems-1;out++){ //外循环,从最左端开始放
min=out; //第一个默认为最小
for(in=out+1;in<nElems;in++) //内循环
if(a[in]<a[min])
min=in;
swap(out,min);
}
}
//swap方法交换(最好写到程序内部,减少调用)
private void swap(int one,int two){
long temp=a[one];
a[one]=a[two];
a[two]=temp;
}
}
class SelectSortApp{
public static void main(String[] args){
int maxSize=100; //数组大小
ArraySel arr; //涉及到的数组
arr=new ArraySel(maxSize); //创建数组
//向数组添加数据
arr.insert(77);
arr.insert(42);
arr.insert(85);
arr.insert(12);
arr.insert(69);
arr.insert(98);
arr.insert(23);
//数组打印
arr.display();
//将数组中数据排序
arr.selectionSort();
//再次打印数组数据
arr.display();
}
}