提起排序,记忆最深刻的就是冒泡法排序,因为这是程序员入门必学的第一个排序算法。
但是冒泡法需要不断地遍历数组,不断地遍历数组,需要消耗更多的时间。
相对于冒泡法,二分法排序的效率相对的更高一些。
public class Bisection {
public static void main(String[] args) {
Integer[] a= {74,81,47,77,48,3,40,34,15,67,4,31,41,54,98,27,84,37,75,38,24,72,9,45,77,43,11,2};
a=new Bisection().order(a);
for(int i=0;i<a.length;i++)
{
System.out.println(a[i]);
}
}
public Integer[] order(Integer[] a) {//正序为true(默认),倒序为false
return order(a,true);
}
public Integer[] order(Integer[] a,boolean b) {
int min,max,middle=0,temp,length=a.length;
for(int j=1;j<length;j++)
{
min=0;
max=j-1;
temp=a[j];
while(min<=max) {
middle=(min+max)/2;//b的作用:改变表达式的布尔值,从而控制排列顺序
if(a[middle]<temp==b) {
min=middle+1;
}else
{
max=middle-1;
}
}
for(int i=j;i>min;i--)
{
a[i]=a[i-1];
}
a[middle]=temp;
}
return a;
}
}