1、核心算法
/**
* 核心算法
*/
class ArraySel{
private long[] a;//定义排序数组
private int nElems;//定义数组大小
public ArraySel(int max){
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);//交换
}
}
}
/**
* 交换
*/
private void swap(int one, int two){
long temp = a[one];
a[one] = a[two];
a[two] = temp;
}
}
2、运行并试执行:
class SelectSortApp{
public static void main(String[] args){
int maxSize = 100;
ArraySel arr;
arr = new ArrauSel(maxSize);
//插入数据
arr.insert(77);
arr.insert(99);
arr.insert(44);
arr.insert(55);
arr.insert(22);
arr.insert(88);
arr.insert(11);
arr.insert(00);
arr.insert(66);
arr.insert(33);
arr.display();//打印数据-排序前
arr.selectionSort();//排序
arr.display();//打印数据-排序后
}
}
3、运行结果:
77 99 44 55 22 88 11 0 66 33
0 11 22 33 44 55 66 77 88 99
Reference:
[1] Robert Lalore(著) 计晓云,赵研,曾希,狄小菡(译), Java数据结构和算法(第二版),中国电力出版社,2004 :63-65