前两天无意中看到公司的面试题的时候,突然一个熟悉的字眼踃到我的面前 :数组的冒泡排序。
以前刚接触java的时候就毗里拍啦打的代码;当然尝试着再撸一遍的时候,发现竟然根本码不出来了。
于是,就赶紧补习一下排序的知识 。。。
java排序方式最常用的有:快速排序、插入排序、选择排序、冒泡排序。
demo:
int a[] = {1,6,2,4,10};
快速排序:
顾名思义,它的速率是最快的。只需要使用数组的集合类:Arrays即可;升序。
Arrays.sort(a);
插入排序:
for(int i=1;i<a.length;i++){
for(int j=i;j>0;j--){
if (a[j]<a[j-1]){
int temp=a[j-1];
a[j-1]=a[j];
a[j]=temp;
}else break;
}
}
选择排序:
public static int[] selectSort(int[] args){//选择排序算法 for (int i=0;i<args.length-1 ;i++ ){ int min=i; for (int j=i+1;j<args.length ;j++ ){ if (args[min]>args[j]){ min=j; } } if (min!=i){ int temp=args[i]; args[i]=args[min]; args[min]=temp; } } return args; }
冒泡排序:
for(int i = 0;i < a.length-1;i ++){
for(int j = 0;j < a.length-1-i;j ++){
if(a[j]<a[j+1]){
int temp;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
就这四种排序方式来讲,由上往下,效率依次降低。即快速排序最快。
写到这里,就再插播一段js数组排序:
var aJS = new Array();
aJS[0]=1;
aJS[1]=10;
aJS[2]=2;
aJS[3]=5;
排序可使用js--> Array提供的sort()方法。即:
aJS.sort();但此时的排序是根据ascii编码来进行排序的,结果可能与我们看到的有些不同。我们可以在该方法中添加函数来解决这一问题,相当于重写了sort的比较方法。
//从小到大排序aJS.sort(function(a,b){return a>b?1:-1});