对10000个完全无序的随即数据排序表明,效率上:插入排序>选择排序>冒泡排序,效率差为2.3倍和1.75倍,即插入排序是冒泡排序的4.3倍。
插入排序:
public int[] insertSort(int[] data) {
for(int i=1,j;i<data.length;i++){
int tmp = data[i];
for(j=i;j>0&&tmp<data[j-1];j--){
data[j]=data[j-1];
}
data[j]=tmp;
}
return data;
}
选择排序:
public int[] selectionSort(int[] data){
for(int i=0;i<data.length-1;i++){
int least=i;
for(int j=i+1;j<data.length;j++){
if(data[j]<data[least])
least=j;
}
if(i!=least){
int tmp=data[least];
data[least]=data[i];
data[i]=tmp;
}
}
return data;
}
冒泡排序:
public int[] bubbleSort(int[] data) {
int n=data.length;
for(int i=0;i<n-1;i++)
for(int j=n-1;j>i;j--)
if(data[j]<data[j-1]){
int tmp=data[j];
data[j]=data[j-1];
data[j-1]=tmp;
}
return data;
}