常用简单排序算法汇总:冒泡+选择+插入
简单排序算法是我们学习数据结构首先接触到的,也是企业面试易考的。重温一下
?
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++){ //外循环,从最左端开始放longtemp=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(); }} ?