对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; }