简单排序算法是我们学习数据结构首先接触到的,也是企业面试易考的。重温一下
class ArraySort{
private long[]a; //封装long类型数组a[]
private int nElems; //数据量
public ArraySort(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(" ");
}
//swap方法交换(最好写到程序内部,减少调用)
private void swap(int one,int two){
long temp=a[one];
a[one]=a[two];
a[two]=temp;
}
//冒泡排序主代码
public void bubbleSort(){
int out, in;
for (out=nElems-1;out>1;out--){//外循环,找到需要比较的最后的位置
for(in=0;in<out;in++){ //内循环,比较outer前面的书籍
if(a[in]>a[in+1]){ //比较大小,将大数据排在后面
swap(in,in+1);
}
}
}
}
//选择排序主代码
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);
}
}
//插入排序主代码
public void insertionSort(){
int out, in;
for (out=1; out<nElems;out++){ //外循环,从最左端开始放
long temp=a[out];
in = out;
while(in>0&&a[in-1]>=temp){
a[in]=a[in-1];
--in;
}
a[in]=temp; //插入标记项
}
}
}
class Sort{
public static void main(String[] args){
int maxSize=100; //数组大小
ArraySort arr; //涉及到的数组
arr=new ArraySort(maxSize); //创建数组
//向数组添加数据
arr.insert(77);
arr.insert(42);
arr.insert(85);
arr.insert(12);
arr.insert(69);
arr.insert(98);
arr.insert(23);
//数组打印
arr.display();
//将数组中数据排序
System.out.println("冒泡排序算法结果");
arr.bubbleSort();
arr.display();
System.out.println("选择排序算法结果");
arr.selectionSort();
arr.display();
System.out.println("插入排序算法结果");
arr.insertionSort();
arr.display();
}
}