插入排序是最简单的排序算法 :
看了看书按照书上说的对插入排序进行了实现:
public static void sort() {
for(int i=0;i<a.length;i++) {
for(int j=i;j>0&&a[j] < a[j-1];j--) {
Utils.swap(j, j-1, a);
}
}
}
public static void sort() {
for(int i=0;i<a.length;i++) {
for(int j=i;j>0&&a[j] < a[j-1];j--) {
Utils.swap(j, j-1, a);
}
}
}
swap的实现如下:
public static void swap(int i,int m, int a[]) {
int temp = a[i];
a[i] = a[m];
a[m] = temp;
}
这种方式中主要是对目标值位置不断的移动来保证数据左小右大的排列
但是这种方式可以进一步的改进:
public static void sort2() {
for(int i=0;i<a.length;i++) {
int temp = a[i];
int j=i;
for(;j>0 && a[j-1]>temp;j--) {
a[j] = a[j-1];
}
a[j] = temp;
}
}
这样赋值的次数会减少很多哦,效率也有了进一步的提高